使用场景区分:通用爬虫和聚焦爬虫
通用爬虫:将互联网上的网页下载到本地。
聚焦爬虫:按照特定目的进行工作的爬虫
爬取形式进行区分:累积式爬虫和增量式爬虫
累积式爬虫:通过遍历的方式爬取所有允许的内容
增量式爬虫:在爬取了大量网页前提的基础下爬取网页更新的内容
按照爬取数据的存在方式进行区分:表层爬虫 和深层爬虫
表层爬虫:爬取网页表层的内容
深层爬虫:不能通过静态网页显示的内容
(建议记住名字)
浏览网页的过程
- DNS解析器解析你输入的网址,解析成对应的ip地址
- 向对应的ip地址发送请求
- Web服务器,返回请求的网页
- 浏览器解析html的内容,并显示出来
URL地址由协议头,服务器地址,文件路径三部分组成
例:http://www.770aa.com/ index/data
http协议头 www.770aa.com服务器地址(会被dns服务器解析格式例如10.10.10.211/分割表示路径)
域名:一个域名只能对应一个ip地址,但是一个ip地址可以对应多个域名
Get请求与put请求“:get请求所有参数都显示在url上,post请求数据隐藏通常用来向服务器提交数据
响应状态码
100~199:表示服务器接收到消息,需要客户端继续提交才能完成整个过程
200~299:表示服务器成功接收处理问题。
300~399:需要客户端继续细化请求,例如请求资源转移到了新的地址(302)
400~499:客户端请求错误,404服务器无法找到请求的页面,403客户权限不够
500~599:服务器出错
Urllib库
urllib.request 请求模块
urllib.error 异常处理模块
urllib.parse url解析模块
urlopen :request下的一个方法参数
urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)
注意:
Data必须是一个bytes对象
Timeout 设置超时
剩下两个cadefault、context很少使用书上有介绍懒得打。
最简单的urlopen使用
注意直接返回的对象无法直观看到需要用read方法解析,decode进行编码进行可视化的浏览
如果需要对爬取的网页进行更复杂的操作就需要构造Request对象
构建request 对象可以添加请求头,数据等等