静态网页是指服务器直接返回预先编写好的 HTML 文件,内容不会因用户交互而动态改变。爬取静态网页的核心步骤是:发送 HTTP 请求 → 获取 HTML 内容 → 解析数据。
Requests库是Python中一个HTTP库,也是静态网页爬取安装必备库。基于Urllib开发,采用Apache2 Licensed开源协议。它比标准库urllib更加方便易用,能够帮助我们高效地发送HTTP请求和处理响应。
Requests常见方法
HTTP协议中常用的请求方法有GET、POST、PUT、DELETE等,分别对应查、增、改、删操作。Requests库对这些方法都进行了良好的封装。
一般来说Post和Get请求使用频率较高。
GET请求是最常用的请求方法,用于从服务器获取资源。
requests.get(url, params=None, **kwargs) url : 拟获取页面的url链接
params : url中的额外参数,字典或字节流格式,可选
**kwargs: 12个控制访问的参数
POST请求通常用于向服务器提交数据。
url:获取页面的url链接
data:字典、字节序列或文件对象,作为Requests的内容
**kwargs:12个控制访问的参数
Requests对象响应
由服务端返回给客户端,可分为三部分:响应状态码( Response Status Code ) 响应头( Response Headers ) 响应体( Response Body )
r.text:获取响应的文本内容;
r.status_code:获取响应的状态码;
r.headers:获取指响应头信息;
r.cookies:获取Cookies信息;
r.url:获取请求的URL;
r.history:获取请求的历史信息;
r.request:获取请求的方式;
r.status_code : HTTP请求的返回状态,200表示连接成功,404表示失败
r.text : HTTP响应内容的字符串形式,即URL对应的页面内容
r.encoding : 从HTTP header中猜测的响应内容编码方式
r.apparent_encoding : 从内容中分析出的响应内容编码方式
r.content : HTTP响应内容的二进制形式
raise_for_status( )自动判断 r.status_code 是否为 200
Cookie与Session
Cookie 的机制
服务器通过 HTTP 响应头向客户端(浏览器)发送 Cookie。
浏览器接收后,将 Cookie 存储在本地(如 Cookies
文件夹),并当网页要发http请求时,浏览器会先检查是否有相应的cookie,有则自动添加在request 请求中header的cookie字段中。这些是浏览器自动帮我们做的,而且每一次http请求浏览器都会自动帮我们做。
cookie最典型的应用是:
(一):判断用户是否登陆过网站,以便下次登录时能够直接登录。如果我们删除cookie,则每次登录必须重新填写登录的相关信息。
(二):另一个重要的应用是“购物车”中类的处理和设计。用户可能在一段时间内在同一家网站的不同页面选择不同的商品,可以将这些信息都写入cookie,在最后付款时从cookie中提取这些信息,当然这里面有了安全和性能问题需要我们考虑了。
Session机制
Session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构来保存信息。
当程序需要为某个客户端的请求创建一个Session时,服务器首先检查这个客户端的请求(cookie)里是否已包含了一个Session标识(称为Session Id)。如果已包含则说明以前已经为此客户端创建过Session,服务器就按照Session Id把这个session检索出来使用(检索不到,会新建一个);如果客户端请求不包含Session Id,则为此客户端创建一个Session并且生成一个与此Session相关联的Session id,Session Id的值应该是一个既不会重复,又不容易被找到规律的方式以仿造的字符串,这个Session Id将被在本次响应中返回给客户端保存。
实例
QQ表情包图片爬取
手机号码归属地查询