网络爬虫介绍

来源:互联网 发布:织梦cms授权 编辑:程序博客网 时间:2024/06/08 10:17

一介绍

自从有网络从来以来就有数据存在,而爬虫就跟随互联网的存在而存在,比较常见的使用就是Google,百度等搜索网站。网络数据采集是一种通过多种手段收集网络数据的方式,涉及非常广的编程技术和手段,如:数据分析、信息安全,数据库,HTTP协议,HTML语言,图像处理等。抓取可以运用于,市场预测,机器语言翻译,医疗诊断,等领域,通过爬虫的使用可以让你的工作更加高效,帮助你提升生产力,甚至开创一个全新的领域。

二,网络连接

通常我们访问的数据都是通过浏览器进行显示,这就涉及到网络连接的问题,打个比方网络连接的过程,

比如张三有一台笔记本准备访问谷歌:

1张三在浏览器请求谷歌,实际上电脑底层是发送 1和0的比特值,这些网络请求一般包括请求头和消息体,请求头包含当前的本地路由器MAC地址和谷歌的IP地址,消息体包含张三对谷歌服务器的请求

2张三本地路由器收到所有1和0比特值,把他们理解成一个数据包,从张三自己的mac地址寄送到谷歌的IP地址,路由器把数据包盖上自己的IP地址作为发件地址,然后通过互联网发出去。

3 张三的数据包游历了一些中介服务器,最终到达谷歌服务器

4谷歌服务器在他的ip地址收到数据包,获取一些请求信息,传递到相应处理程序,谷歌服务器生成对应HTML文件,返回给张三,然后通过本地路由器以同样的方式回传到张三记机器。

事实上在整个过程中,浏览器都没有参与,浏览器起到一个获取HTML文件,解析成漂亮的图片、声音、视频和文件。而网络浏览器也是用程序编写的,实际上可以用其他方式获取数据,Python实现数据的方式:

from urllib.request import urlopen

html=urlopen("http://www.baidu.com")

print(html.read());

三、相关库文件
1、 urllib是Python的标准库,包含了从网络请求数据,处理cookie,甚至改变像请求头和用户代理这些元数据的函数。
urlopen是用来打开并读取一个从网络获取远程对象。
2 BeautifulSoup库
它通过定位HTML标签来格式化和组织复杂的网络信息,用简单易用的Python对象为我们展现XML结构信息。
a.安装:
Linux系统,sudo apt-get install python-bs4
mac,可先装sudo easy_install pip,然后运行pip install Beautifulsoup4
测试安装是否成功:命令行,先输入,python ,然后from bs4 import BeautifulSoup 没有错误,就说明成功了。

b.运行BeautifulSoup,例如获取一个页面的h1
from urllib.request import urlopen
from bs4 import BeautifulSoup
html = urlopen(“http://www.sina.com”)
print(html.h1)

c.Beautiful 常用函数
get_text(),把HTML文档中所有标签都清除,然后返回一个只包含文字的字符串。
find()和findAll() 可以用这两个函数,通过标签的不同属性轻松的过滤HTML页面,查找需要的标签组或单个标签。

findAll(tag,attributes.recursive,text,limit,keywords),find就相当于findAll limit等于1
tag参数可以传一个或多个标签组成的列表作标签参数,如,.find({h1,h2,h3..})
attributes属性参数,是一个Python字典封装一个标签的若干属性和对应的属性值。如.findAll(“span”,{“class”:{“green”,”red”}})
文本参数不同于其它,它是用标签的文本内容去匹配,而不是用标签的属性。.findAll(text=“the price”)

keyword 关键词参数,可以让你选择那些具有指定属性的标签,findAll(id=”text”)

导航树:
findAll函数通过标签名称和属性来查找标签。如果需要通过标签在文档中的位置来查找标签,可以使用导航树,
bsObj.tag.subTab.anotherTag
主要是HTML是有有规律的HTML标签来表示,找到一个标签后可以根据他查找其父、子、兄弟标签。
获取豆瓣电影中的评分大于9.0的例子
# -- coding: utf-8 --
import urllib
from urllib.request import urlopen
from urllib.request import Request
import time
from bs4 import BeautifulSoup
BaseUrl = "https://book.douban.com/tag/%E7%94%B5%E5%BD%B1?start=0&type=T"
j=1
# 设置始末页码
for i in range(0, 98):
url = "https://book.douban.com/tag/%E7%94%B5%E5%BD%B1?start="+str(i*20)+"type=T"
headers = ('User-Agent','Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11')

opener = urllib.request.build_opener()
opener.addheaders = [headers]
page = opener.open(url).read()
#解决BeautifulSoup中文乱码问题

soup = BeautifulSoup(page, from_encoding="gb18030")
# print("requet page"+page)
item_lists = soup.find_all("li", {"class":"subject-item"})

for item in item_lists:
#选择想要的点击率
ration = item.find("span",{"class":"rating_nums"})
if float(ration.string)>9.0:

content = item.find("div",{"class":"info"})

title = content.find("h2").find("a")
line1 = (title.get_text().strip())

des =ration.parent.next_sibling
line2 =des.string.strip()
print(line2)

f = open('movie.md', 'a')
f.write("###"+" "+line1+"\t"+"<"+line2+">"+"\t"+ " "+ "star"+str(ration)+"\n")
f.close()
j+=1

0 0
原创粉丝点击