resquests模块基本用法

  • Post author:
  • Post category:其他




resquests模块



常见的响应对象和方法

response.url:响应的URL,有时候响应的URL和请求的URL不一样。
response.status_code:响应状态码
response.requests.headers:响应对应的请求头
response.headers:响应头
response.requests.cookies:响应对应的请求的cookie;返回cookie的类型
response.cookies:响应的cookie
response.json():自动将json字符串类型的响应内容替换成Python对象



发送请求:



一. 发送带header 头的请求

requests.get(url,header=headers)

header参数接受字典形式 的请求头

请求头字段名作为key ,字段对应的值为value

import requests

url = 'http://www.baidu.com'

response = requests.get(url)
print(len(response.content.decode()))
print(response.content.decode())

headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36'
 }

response1 = requests.get(url, headers=headers)
print(len(response1.content.decode()))
print(response1.content.deco



发送带参数的请求:



一:url直接带参数
import requests

url = 'http://www.baidu.com/s?wd=python'

headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36'
 }

response = requests.get(url, headers=headers )

with open('baidu.html','wb') as f:
    f.write(response.content)

直接在url上写参数



二:使用params参数
  1. 构建参数字典
  2. 发送请求时设置参数字典
import requests

url = 'http://www.baidu.com/s?'

headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36'
 }

data = {
    'wd':'python'
}

response = requests.get(url, headers=headers, params=data)

print(response.url)

with open('baidu1.html','wb') as f:
    f.write(response.content)



在headers参数中携带cookie

可以保持网站的登录状态

  1. 从浏览器中复制User-Agent和cookie
  2. 浏览器中的请求头字段和值与header参数中必须一致
  3. header请求参数字典中的cookie键对应的值是字符串
#coding utf-8

import requests
url = 'https://github.com/exile-mirganna'

#构造请求头
headers= {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36'
    'cookies':'...............xxxxx.x..x..x.x..x'
}

response = requests.get(url,headers=headers)

with open ("github.html","wb") as f:
    f.write(response.content)



cookies参数的使用:

在上面我们在headers参数中携带cookie,也可以使用专门的cookie参数



1.cookie参数的形式:字典
cookies={"cookie的name":"cookie的value"}
  • 该字典对应请求头中cookie字符串,以分号,空格分割每一对字典键值对
  • 等号左右的是一个cookie的name,对应cookie字典的key
  • 等号右边对应 的cookie字典的value


2.cookies参数的使用方法
response = requests.get(url,cookies)


3.将cookie字符串转换为cookie参数所需的字典:


4.cookieJar对象转换为cookie字典的方法

使用requests获取的response对象,具有cookie属性,该属性值是一个cookieJar类型,包含了对方服务器设置在本地的cookie。我们如何将其转换成cookie字典呢?

  1. 转换方法:cookie_dict = requests.utils.dict_from_cookiejar(response.cookie)
  2. 其中response.cookies返回的就是cookieJar类型的对象
  3. requests.utils.dict_from_cookiejar 函数返回cookies字典
import requests

url ='http://www.baidu.com'

response = requests.get(url)

print(response.cookies)

dict_cookies = requests.utils.dict_from_cookiejar(response.cookies)
print(dict_cookies)

jar_cookies = requests.utils.cookiejar_from_dict(dict_cookies)
print(jar_cookies)


5.超时参数timeout的使用
import requests

url = 'http://twitter.com'

response = requests.get(url,timeout =3)


6.代理设置
import requests

url ='http://baidu.com'

proxies ={
    'http':'http://106.14.5.129:9000'
}
#里面的代理Ip可以在网上找
response =requests.get(url,proxies=proxies)


使用verify参数忽略CA证书

在浏览器上网的时候,有时候能够看到以下提示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YBBgtSJc-1620807011105)(C:\Users\Simple\AppData\Roaming\Typora\typora-user-images\image-20210512140112131.png)]

原因:该网站的CA证书没有经过(受信任的根证书颁发机构)的认证

爬虫在爬这样的网站时是会报错的

import requests

url='http://sam.huat.edu.cn:8443/selfservice/'

response = requests.get(url , verify=False)#关掉

print(response.content)


post请求练习

1.基本介绍

requests.post(url,data)

要多一个data字典

import requests

url= 'http://dict.youdao.com/w/%E9%87%91%E5%B1%B1%E5%BF%AB%E8%AF%91%E5%9C%A8%E7%BA%BF%E7%BF%BB%E8%AF%91/'

data={
    'a':'=2',
    'b':'=3'
}
requests.post(url,data)

2.post请求数据来源

  • 固定值 抓包比较不变的
  • 输入值 抓包会变化的值
  • 预设值–静态文件 : 需要提前从静态HTML中获取
  • 预设值–发请求 需要对指定地址发请求获取数据
  • 在客户端生成的 分析JS,模拟生成数据


requests.session进行状态保持

requests模块中的session类能够自动处理发送请求响应过程中产生的cookie,进而达到状态保持的目的。

1.requests.session的作用以及运用场景

  • requests.session的作用

自动处理cookie,即下一次请求会带上上一次的cookie

  • requests.session的运用场景

自动处理连续的多次请求过程中产生的cookie

2.requests.session的使用方法

session实例在请求了一个网站后,对方服务器设置在本地的cookie会保存在session中,下一次再使用session请求对方服务器时,就会带上上一次的cookie

import requests

session = requests.session()  #实例化session对象
response = session.get(url,headers,...)
response = session.post(url,data)



版权声明:本文为qq_42702981原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。