Python-requests库的基本操作
一、响应状态码
- 响应状态码是HTTP协议的一种规定,大部分网站都会遵守。
- 1、200系列————成功
- 200 OK(成功)
- 201 Created(创建成功)
- 2、300系列————重定向(requests库会自动处理重定向)
- 301 永久性转义
- 302 临时性转移
- 304 没有更改
- 3、400系列————失败
- 401 认证失败
- 403 禁止请求
- 404 未找到资源
- 405 请求超时(异常)
- 4、500系列————服务器错误
- 502 网关错误
- 503 服务器错误
- 504 网关超时
二、HTTP请求包
- 1、请求行内容
- 请求方法:GET(获取资源)、POST(传输实体主体)
- 请求网址URL
- 协议版本:HTTP 1.1 (主流)
- 2、请求头部
- 内容:{'头部字段名' : '值'} * N
- requests有默认的user-agent,值为python-requests/版本号
- 修改请求时的user-agent,就是将爬虫请求伪装成浏览器请求
- 3、请求包体
三、HTTP请求方法
- 根据HTTP标准,HTTP请求可以使用多种请求方法。
- HTTP1.0定义了三种请求方法:GET,POST和HEAD方法。
- HTTP1.1新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE和CONNECT方法。
- GET:请求指定的页面信息,并返回实体主体。
- POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件),数据被包含在请求体中。POST请求可能会导致新的资源的建立和或已有资源的修改。
- HEAD:类似于GET请求,只不过返回的响应中没有具体的内容,用于获取报头
- PUT:从客户端向服务器传送的数据取代指定的文档的内容。
- DELETE:请求服务器删除指定的页面。
- CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
- OPTIONS:允许客户端查看服务器的性能。
- TRACE:回显服务器收到的请求,主要用于测试或诊断。
- PATCH:是对PUT方法的补充,用来对已知资源进行局部更新。
四、content & text
- content:字节类型
- text:字符串类型,只适用于文本的内容展示
- 如果是网页,text相当于是对content进行解码;如果是文件,则text什么都不是。
五、查看跳转记录
- request自动处理跳转
- history:列表,如果有跳转,至少有一个响应记录
六、响应头字段内容
- Content-Encoding:文档的编码(Encode)方法,只有在解码之后才可以得到Content-Type头指定的内容类型
- Content-Length:表示内容长度
- Content-Type:表示后面的文档属于什么类型,默认为text/plain,但是通常需要显式的指定为text/html
- Location:表示客户应当到哪里去提取文档。Location通常不是直接设置的,而是通过HttpServletResponse的sendRedirect方法,该方法同时设置状态代码为302
- Server:服务器名字(主要包括:Nginx、Apache、Tomcat等),Servlet一般不设置这个值,而是由Web服务器自己设置
- Set-Cookie:设置和页面关联的Cookie,Servlet不使用response.setHeader("Set-Cookie", ...),而是使用HttpServletResponse提供的专用方法addCookie
七、代理IP的使用
- 不使用代理IP:浏览器 -> 服务器
- 使用代理IP:浏览器 -> 代理转发服务器 -> 目标服务器
- 要注意代理IP的有效期和支持转发的协议类型
八、timeout
- 单位是秒
- 默认值为180秒
- 自行指定:timeout = n
import requests
url = r'目标网址'
proxy = {
'http': 'http://代理IP',
'https': 'https://代理IP',
}
cookie = {
Cookie内容
}
response = requests.get(url, proxies = proxy, cookies = cookie, timeout = 30)
print(response)
response.status_code
response.text
response.content
response.content.decode("utf-8")
response.headers
response.request
response.request.headers
response.history
response.history[n].url