世界上80%的爬虫是基于python开发的,学好爬虫技能,对后续的大数据分析,挖掘,机器学习提供重要的数据源
网络爬虫,是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本
爬虫的本质是什么
模拟浏览器打开网页,获取网页中我们想要的那部分数据
浏览器发送消息给网址所在的服务器,这个过程叫做http Request(请求)
服务器收到浏览器发送的消息后,根据发送的内容,作出相应的处理,然后把消息传给浏览器,这个过程叫做http Response(响应)
爬虫的基本流程
发起请求
通过http库向目标站点发起请求,也就是发送一个Request,请求可以包含额外的header等信息,等待服务器响应
获取响应内容
如果服务器能正常相应,会得到一个Response,其中的内容便是所要获取的页面内容,类型可能是html,json字符串,二进制数据(图片或者视频)等类型
解析内容
得到的内容可能是html,可以用正则,页面解析库进行解析
可能是json,可以直接转换为json对象解析
可能是二进制数据,可以做保存或者进一步处理
保存数据
保存形式多种多样,可以存为文本,可以保存为数据库,或者特定格式的文件
request包含
请求方式
主要有:get和post两种常用类型,两者的区别是get请求的数据放在url中,post则是放在头部
get:向指定的资源发出"显示请求".使用get方法操作应该只用在读取数据,
post:向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件).数据被包含在请求文本中,这个请求可能会创建新的资源,或者修改现有资源,抑或两者皆有
请求URL
URL,即统一资源定位符,也就是我们所说三个部分组成的网址.互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该曾样处理他
URL的格式由三个部分组成
第一部分是协议(服务方式)
第二部分是存储该资源的主机IP地址(也包括端口号)
第三部分是主机资源的具体地址,比如目录和文件名
爬虫爬取数据时必须有一个目标的URl才可以获取数据,
请求头
包含请求时的头部信息,比如User-Agent,Host,Cookies等信息
请求体
请求时携带的数据,比如提交表单时的表单数据(post)
Response包含
所有http响应的第一行都是状态行,依次是http版本号,三位数字组成的状态代码,以及描述状态的词语,彼此由空格分隔
响应状态
有多种:比如 200代表成功,301跳转,404找不到页面,502服务器错误
响应头
比如内容类型,类型长度,服务器信息,设置Cookie
响应体
最主要的部分,包含请求资源的内容,比如html,二进制数据等
能够爬取什么样的数据
网页文本:html文档,json格式化文本
图片:获取到二进制文件,保存为图片格式
视频:二进制文件
其他:只要是能够请求到的,都可以获取
如何解析数据
1.直接处理
2.json解析
3.正则表达式处理
4.BeadutifulSoup解析处理
5.PyQuery解析处理
6.Xpath解析处理