Python——requests模块全解

目录

        安装 requests

         常用属性,方法

        response.text和response.content的区别

通过response.content进行decode,来解决中文乱码——

发送带headers参数请求

        查看浏览器请求头

        发送带参数请求

         法一:网址中带参数

        法二:通过字典params构造参数字典

        在headers参数中携带cookie

        在字典中添加cookie参数

        timeout使用方法

proxies代理参数的使用

        proxies使用方法 

一,request全解

此模块主要用于发送请求获取响应,代码简洁。

  安装 requests

pip install requests

Python——requests模块全解_第1张图片

常用属性,方法

Python——requests模块全解_第2张图片

案例——通过requests向360导航首页发送请求,获取该页面源码

import requests

# 目标网址
url = "https://hao.360.com/?src=lm&ls=n49dd49049f"

# 发送请求获取响应
response = requests.get(url)

# 查看响应对象的类型
print(type(response))
# 查看响应状态码
print(response.status_code)
# 查看响应内容的类型
print(type(response.text))
# 查看cookies
print(response.cookies)
# 查看响应的内容
print(response.text)

输出——


200

]>








360导航_一个主页,整个世界


response.text和response.content的区别

response.text:

·类型:str

·解码类型:resquests模块自动根据HTTP头部对响应的编码作出有根据的推测,推测文本编码

response.content:

   ·类型:bytes

·解码类型:无指定,执行挑选

通过response.content进行decode,来解决中文乱码——

·response.content.decode():默认utf-8

·response.content.decode('GBK')

常见编码字符集

·utf-8

·gbk

·asci

·iso-8859-1

案例——

import requests

# 目标网址
url = "https://www.taobao.com/"

# 发送请求获取响应
response = requests.get(url)

# 手动设置编码格式
response.encoding = 'utf8'
# 打印源码的str类型数据
print(response.text)

# response.content是存储的bytes类型的响应数据,进行decode操作
print(response.content.decode('utf-8'))

输出——




  
  
  
  淘宝网 - 淘!我喜欢
  
  
  
  
  

发送带headers参数请求

查看浏览器请求头

右键——检查——Network——User-Agent,复制即可

Python——requests模块全解_第3张图片

方法解释

requests.get(ur1, headers=headers)

·headers参数接收字典形式的请求头

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

代码示例

import requests

# 目标网址
url = "https://www.taobao.com/"

# 构建请求头字典,最重要的就是User-Agent
# 如果需要其他请求头,就在headers字典中加上
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'}

# 发送请求获取响应
response = requests.get(url,headers=headers)

print(response.text)

输出——整个网页源码(截取显示)

男士外套
      
    
      
      墙纸

发送带参数请求

如何删除网页地址中多余参数

·浏览器搜:猫,显示的url很复杂

·一个个删除参数并刷新,得到

Python——requests模块全解_第4张图片

法一:网址中带参数

import requests

# 目标网址
url = "https://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/103.0.0.0 Safari/537.36'}

# 发送请求获取响应
response = requests.get(url,headers=headers)

print(response.text)

法二:通过字典params构造参数字典

import requests

# 目标网址
url = "https://www.baidu.com/s?"

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

# 请求参数是一个字典
kw = {'wd': 'python'}

# 发送请求的时候设置参数字典,获取响应
response = requests.get(url, headers=headers, params=kw)

print(response.text)

在headers参数中携带cookie

网站经常利用请求头中的cookie字段来做用户访问状态的保持,那么我们可以在headers参数中添加cookie,模拟普通用户请求。 Cookie具有时效性,一段时间后需要更换

如图找到对应Cookie并复制

在字典中添加cookie参数

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36',
    'Cookie': 'BAIDUID=157D064FDE25DE5DD0E68AF62CBC3627:FG=1; BAIDUID_BFESS=157D064FDE25DE5DD0E68AF62CBC3627:FG=1; BIDUPSID=157D064FDE25DE5DD0E68AF62CBC3627; PSTM=1655611179; BD_UPN=12314753; ZFY=Cs:BflL5Del98YBOjx2EyRPzQE3QCyolFKzgVTguBEHI:C; BD_HOME=1; H_PS_PSSID=36548_36626_36673_36454_31254_36452_36690_36165_36693_36696_36569_36657_26350_36469; BA_HECTOR=85850gag05ak0l040h1hbg5st14; delPer=0; BD_CK_SAM=1; PSINO=7; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; H_PS_645EC=0e08fXgvc5rDJVK1jRjlqmZ7pLp5r%2Fmn9jlENTs3CQ4%2FbhzUL09Y%2F%2FYtCGA; baikeVisitId=e10d7983-547d-4f34-a8d8-ec98dbcba8e4; COOKIE_SESSION=115_0_2_2_1_2_1_0_2_1_0_0_0_0_0_0_1655611189_0_1656233437%7C3%230_0_1656233437%7C1'
}

超时参数timeout

上网时遇到网络波动,一个请求等了很长时间也可能没有结果,这会让整个项目的效率变得很低。这时需要请求强制停止,若没有在特定时间内返回结果则报错。

timeout使用方法

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

3秒后无响应则抛异常

实例——

import requests

# 目标网址
url = "https://www.baidu.com/"

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

try:
    response = requests.get(url, headers=headers, timeout=5)  # 超时设置为5秒
except:
    for i in range(4):  # 循环去请求网站
        response = requests.get(url, headers=headers, timeout=20)
        if response.status_code == 200:
            break
html_str = response.text

proxies代理参数的使用

为了让服务器认为不是同一个客户端在请求;为了防止频繁向一个域名发送请求被封ip,需要使用代理ip

Python——requests模块全解_第5张图片

proxies使用方法

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

proxies的形式:字典

proxies = {
    "http": "http://12.34.5679:9527",
    "https": "https://12.34.5679:9527",
}

注意:当proxies字典中包含有多个键值对,发送请求时将按照url地址的协议来选择使用相应的代理ip。

发送post请求

requests模块发送post请求函数的其它参数与发送get请的参数完全一致

语法

response = requests.post(url, data) # data参数接收一个字典

找data表单

Python——requests模块全解_第6张图片

import requests

url = "https://fanyi.so.com/"

data = {
    'word': '鸟'
}
response = requests.post(url)
print(response.text)
E:\anaconda\envs\request\python.exe C:/Users/Administrator/PycharmProjects/request/main.py




    
    
    
        360翻译    
    
    
    
    
    



    
    

Python——requests模块全解_第7张图片

import requests

url = "https://fanyi.baidu.com/"

data = {
    'query': '爱'
}
response = requests.post(url)
print(response.text)

文章就到这啦,喜欢的给个关注与点赞哦,后续更多优质学习文章~

你可能感兴趣的:(python,servlet,开发语言,深度学习)