Python requests的GET和POST方法

Python requests的GET和POST方法

Requests模块是Python中发送请求获取响应的模块,使用 Requests 发送网络请求非常简单。

Requests的底层实现是Python标准库中的urllib,Requests从Python2.6一直到Python3的版本都可以使用,所以Requests可以兼容Python2和Python3。

使用Requests比使用urllib更简单,也更易用。

urllib的使用可以参考: https://blog.csdn.net/weixin_43790276/article/details/95111341

一、安装requests

pip install requests

二、使用requests发送GET请求

# coding=utf-8
import requests


response = requests.get("https://www.baidu.com")
print(response.content.decode('utf-8'))

运行上面的代码,会获取到百度首页的html文件。我们直接在浏览器中打开百度首页,右键后点击“查看网页源代码”,得到的结果是一模一样的,说明我们已经通过requests获取到了百度首页的数据。

三、requests添加报头参数和查询字符串

# coding=utf-8
import requests


url = "https://www.sogou.com/tx?"
key_dict = {"query": "python"}
headers = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36",}
response = requests.get(url, params=key_dict, headers=headers)
print(response.text)

运行上面的代码,获取搜狗搜索的网页数据。结果与我们用搜狗搜索“python”后,右键后点击“查看网页源代码”看到的结果相同。

如果想添加headers,可以传入headers参数来增加请求头中的headers信息。如果要将参数放在url中传递,可以使用params参数,params会将字典参数转换成查询字符串拼接到url后面。

四、response.content和response.text的区别

在我们获取百度首页的时候使用了response.content,获取搜狗搜索时使用了response.text。response.content 和 response.text是requests解析响应数据最常用的两种方法。

使用response.content 时,返回的是服务器响应数据的原始二进制字节流,response.content 的类型是 bytes ,通常用来保存图片等二进制文件。

response.content 可以返回任何网页的数据,没有对响应数据解码,所以我们可以用deocde()来设置编码方式,这样可以得到正确的编码结果。

使用response.text时,Requests 会基于HTTP响应的文本编码自动解码响应内容,response.text 的类型是 str, 大多数 Unicode 字符集都能被无缝地解码。

response.text 是根据HTTP头部对响应的编码作出有根据的推测,推测出文本编码方式,然后进行解码。注意,这里是推测,所以 response.text 不能正确解码所有的网页数据,如百度首页。当不能使用 response.text 时,使用 response.content.deocde()。

五、使用requests发送POST请求

# coding=utf-8
import requests
import time
import json


url = "https://fanyi.qq.com/api/translate"
headers = {
    "Origin": "https://fanyi.qq.com",
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36",
}
time_str = str(int(1000 * time.time()))
key_dict = {
    "source": "zh",
    "target": "en",
    "sourceText": "发送 POST 请求",
    "sessionUuid ": "translate_uuid" + time_str
    }
response = requests.post(url, data=key_dict, headers=headers)
print(response.status_code)
# result = json.loads(response.text)
result = response.json()
# print('result', result)
print(result['translate']['records'][0]['targetText'])

运行结果:

200
Send POST request

在requests中,发送post请求,只需要使用post()方法就可以了,使用data参数接收字典数据,requests会自动将字典转换成json格式的请求体数据。

我们可以使用response.status_code获取响应的状态码,直接使用 response.json() 获取响应的json数据,相当于json.loads(response.text) 。

可见,使用requests更简洁和方便。

 

Python requests的GET和POST方法_第1张图片

 

你可能感兴趣的:(Python/PYPI,Python,Python,requests的GET方法,Python,requests的POST方法)