python爬虫
爬虫原理
模拟请求→拿到数据→根据数据不同的类型用不同的方式解析→存储
学习步骤
1、http协议
2、请求库:requests,(urlib3比较复杂,不建议)
requests请求库只能把页面内容下载本地以后,并不能执行js代码(浏览器可以)
需要分析目标站点策略
3、解析库:re,beautifulsoup,pyquery
4、存储库:文件,MySQL,Mongodb,Redis
5、性能相关:异步IO
6、框架:scrapy
Http协议的8种请求
常用:GET 向特定服务端获取数据,数据在url中传输。
常用:POST 向服务端提交数据,数据包含在请求体中,
其他请求方式:HEAD,PUT,DELETE,OPTIONS,TRACE,CONNECT
网页的加载过程是:
加载一个网页,通常都是先加载document文档,
在解析document文档的时候,遇到链接,则针对超链接发起下载图片的请求
请求头
User-Agent:请求头中如果没有user-agent客户端配置,服务端可能将你当做一个非法用户 host cookies:cookie用来保存登录信息 一般做爬虫都会加上请求头
例如:
User-Agent
Mozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/56.0
Host 请求头指明了服务器的域名(对于虚拟主机来说),以及(可选的)服务器监听的TCP端口号。
HTTP Cookie(也叫Web cookie或者浏览器Cookie)是服务器发送到用户浏览器并保存在浏览器上的一块数据,它会在浏览器下一次发起请求时被携带并发送到服务器上。比较典型的,可以它用来确定两次请求是否来自于同一个浏览器,从而能够确认和保持用户的登录状态。Cookie使得基于无状态的HTTP协议记录稳定的状态信息成为了可能。
请求体
如果是get方式,请求体没有内容
如果是post方式,请求体是form data
ps:
1、登录窗口,文件上传等,信息都会被附加到请求体内
2、登录,输入错误的用户名密码,然后提交,就可以看到post,正确登录后页面通常会跳转,无法捕捉到post
响应
#1、响应状态
200:代表成功
301:代表跳转
404:文件不存在
403:权限
502:服务器错误
#2、respone header
set-cookie:可能有多个,是来告诉浏览器,把cookie保存下来
#3、preview就是网页源代码
最主要的部分,包含了请求资源的内容
如网页html,图片
二进制数据等
爬虫所需工具:
请求库:requests,selenium
解析库:正则,beautifulsoup,pyquery
存储库:文件,MySQL,Mongodb,Redis
requests模块
requests模块可以模拟浏览器的请求,比起urllib,requests模块的api更加便捷,本质就是封装了urllib3。
#注意:requests库发送请求将网页内容下载下来以后,并不会执行js代码,这需要我们自己分析目标站点然后发起新的request请求
#各种请求方式:常用的就是requests.get()和requests.post()
>>> import requests
>>> r = requests.get('https://api.github.com/events')
>>> r = requests.post('http://httpbin.org/post', data = {'key':'value'})
>>> r = requests.put('http://httpbin.org/put', data = {'key':'value'})
>>> r = requests.delete('http://httpbin.org/delete')
>>> r = requests.head('http://httpbin.org/get')
>>> r = requests.options('http://httpbin.org/get')
未完待续
中天一片无情月,是我平生不悔心