爬虫的流程:
获取网页内容→解析网页内容→储存和分析数据
获取网页内容
HTTP请求(客户端发送求情)
组成部分:请求行,请求头,请求体
请求行中包含:
方法类型,资源路径,协议版本
请求头:
中存放的是服务端能接受的信息
请求体:
请求体中发送给服务器的数据
HTTP响应(客户端请求返回响应)
状态行→响应头→响应体
状态行:
协议版本,状态码,状态消息
状态码
1xx | 信息,服务器收到请求,需要请求者继续执行操作 |
2xx | 成功,操作被成功接收并处理 |
3xx | 重定向,需要进一步的操作完成请求 |
4xx | 客户端错误,请求包含语法错误或无法完成请求 |
5xx | 服务器错误,服务器在处理请求的过程中发生了错误 |
今天记忆几个:
100(Continue) 继续。客户端应继续其请求
101(Switching Protocols) 切换协议(切换到更高的http协议)
200(OK) 请求成功 一般用于get和post请求
202(created) 已创建。成功并创建了新的资源
300 (multiple choices)多种选择。请求的资源可以包括多个位置,响应可返回一个资源特征与地址的列表用于浏览器的选择。
301 (move permanently)永久移动。请求的资源被移动到新的URL里
400(bad request) 客户端请求的语法错误,服务器无法理解
401(unauthorized) 请求要求用户的身份认证
500(internal server error) 服务器内部错误,无法完成请求
501(not implemented) 服务器不支持请求的功能,无法完成请求。
响应头
包含一些客户端的信息
响应体
服务器传给客户端的内容。
Request库
基础使用
requests.get(’url‘)向括号内的地址发送get请求
一般在进行爬取是都会定义一下heades请求
so我们在进行get请求的时候,需要用到这个headers参数
定义headers ={user-agent‘:' XXXXXXXXXXXX'}
requests.get(’url‘,headers)
通过参数访问特定的地方
定义一个参数的关键字
例如:kw={‘wd’:‘python’}
通过关键字传参,与上面规定header一致
r=requests.get(‘url’,params=)
r.text(查看相应内容,返回的是Unicode格式的数据)、
可以通过
r.encoding = ’编码’(手动切换编码)
post请求
data中用键值对存放payload中的内容