Requests模块

发起响应时观察抓包Response Headers中的Content-Type类型来决定接受的是response.text还是response.json()以及encoding编码格式

GET请求

  1. import request
  2. html = requests.get('url')
  3. html_bytes = html.content
  4. html_str = html_bytes.decode()
  • requests.get(‘url’):get方式获取网页,得到response对象
  • html.content:使用.content这个属性来显示bytes型网页的源代码,因为在bytes型的数据类型下,中文无法正常显示,“解码”对应的英文为“decode”

    POST请求

    数据提交方式

    具体使用什么方式提交数据要看request

formdata提交

  1. import requests
  2. data = {'key1' : 'value1', 'key2' : 'value2'}
  3. html_formdata = requests.post('url', data=data).content.decode()

JSON提交

  1. import requests
  2. data = {'key1' : 'value1', 'key2' : 'value2'}
  3. html_formdata = requests.post('url', json=data).content.decode()

session会话保持

http/https协议特性:无状态

没有请求到对应页面数据的原因:发起的第二次基于个人主页页面请求的时候,服务器端并不知道该请求是基于登录状态下的请求

cookie:用来服务器端记录客户端的相关状态

cookie值来源:模拟登录发送post请求之后,用服务器创建(set-cookie)

session会话对象:

1.可以进行请求的发送
2.如果请求过程中产生cookie,则该cookie会被自动储存/携带在该session对象中

保持cookie方法:

  1. 手动处理:通过抓包工具获取cookie值,将该值封装到headers中(不建议使用)
    2. 自动处理(session):
    01- 创建session对象:session = requests.Session()
    02- 使用session对象发起post请求:response = session.post(url, headers=headers, data=data)
    03- 使用session对象发起get请求:response1 = session.get(url1, headers=headers) ```python

    01.创建session对象

    session = requests.Session()

02.使用session对象发起post请求

response = session.post(url, headers=headers, data=data)

03.使用session对象发起get请求

response1 = session.get(url1, headers=headers)

  1. <a name="E5gdS"></a>
  2. ### proxy代理
  3. > 反爬机制:封IP
  4. > 反反爬:代理IP池
  5. > `{'协议类型': '地址:端口'}`
  6. ```python
  7. proxies = {'https': '222.110.147.50:3128'}
  8. response = requests.get(url, headers=headers, proxies=proxies)
  9. # 或者直接写一起
  10. response = requests.get(url, headers=headers, proxies={'https': '222.110.147.50:3128'})