Python-requests库的基本操作

1,913 阅读4分钟

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、请求包体
    • 注意:通常只在POST请求时才有

三、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参数
url = r'目标网址'    
# 代理IP
proxy = {
    # 代理IP支持转发的协议
    'http': 'http://代理IP',
    'https': 'https://代理IP',
}
# 设置Cookie
cookie = {
    Cookie内容
}
# 发起请求,并把拿到的响应存入response参数
response = requests.get(url, proxies = proxy, cookies = cookie, timeout = 30)    
print(response)
# 状态码
response.status_code
# 响应文本(网页HTML源码,类型是字符串)
response.text
# 响应文本(网页HTML源码,类型是字节)
response.content
# 通过响应的content字节,可以得到响应的text文本
response.content.decode("utf-8")
# 响应的头部信息
response.headers
# 请求
response.request
# 请求的头部信息
response.request.headers
# 查看跳转记录
response.history
# 查看跳转第n次的url
response.history[n].url