Python使用requests模块发送HTTP请求使用举例

本文详细介绍了Python的requests库,包括GET、POST请求的使用,发送JSON数据,设置请求头,处理响应内容及编码问题。还展示了如何通过requests.request()发送GET请求,以及如何在POST请求中携带参数。同时,文章提到了requests.models.Response对象的常用属性,如status_code、encoding等,并讨论了爬虫中可能出现的编码问题。
摘要由CSDN通过智能技术生成


requests 模块主要用来发 送 HTTP 请求,比 urllib 模块更简洁。

requests 方法

方法描述
post(url, data, json, args)发送 POST 请求到指定 url
get(url, params, args)发送 GET 请求到指定 url
request(method, url, args)向指定的 url 发送指定的请求方法

实例1

# 导入 requests 包
import requests
# 发送请求
x = requests.get('https://www.runoob.com/')
# 返回网页内容
print(x.text)

实例2

# 导入 requests 包
import requests
# 发送请求
x = requests.get('https://www.runoob.com/')
# 返回 http 的状态码
print(x.status_code)
# 响应状态的描述
print(x.reason)
# 返回编码
print(x.apparent_encoding)

输出结果如下

200
OK
utf-8

请求 json 数据文件,返回 json 内容:

# 导入 requests 包
import requests
# 发送请求
x = requests.get('https://www.runoob.com/try/ajax/json_demo.json')
# 返回 json 数据
print(x.json())

输出结果如下:

{‘name’: ‘网站’, ‘num’: 3, ‘sites’: [{‘name’: ‘Google’, ‘info’: [‘Android’, ‘Google 搜索’, ‘Google 翻译’]}, {‘name’: ‘Runoob’, ‘info’: [‘菜鸟教程’, ‘菜鸟工具’, ‘菜鸟微信’]}, {‘name’: ‘Taobao’, ‘info’: [‘淘宝’, ‘网购’]}]}

使用 requests.request() 发送 get 请求

# 导入 requests 包
import requests
# 发送请求
x = requests.request('get', 'https://www.runoob.com/')
# 返回网页内容
print(x.status_code)

输出结果如下:

200

设置请求头:

# 导入 requests 包
import requests
 
kw = {'s':'python 教程'}
# 设置请求头
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}
 # params 接收一个字典或者字符串的查询参数,字典类型自动转换为url编码,不需要urlencode()
response = requests.get("https://www.runoob.com/", params = kw, headers = headers)
# 查看响应状态码
print (response.status_code)
# 查看响应头部字符编码
print (response.encoding)
# 查看完整url地址
print (response.url)
# 查看响应内容,response.text 返回的是Unicode格式的数据
print(response.text)

输出结果如下:

200
UTF-8
https://www.runoob.com/?s=python+%E6%95%99%E7%A8%8B
… 其他内容…

post() 方法可以发送 POST 请求到指定 url

一般格式如下:

# 导入 requests 包
import requests
# 发送请求
x = requests.post('https://www.runoob.com/try/ajax/demo_post.php')
# 返回网页内容
print(x.text)

输出结果如下:

本内容是使用 POST 方法请求的。

请求时间: 2022-05-26 17:30:47

post 请求带参数:

# 导入 requests 包
import requests

# 表单参数,参数名为 fname 和 lname
myobj = {'fname': 'RUNOOB','lname': 'Boy'}
# 发送请求
x = requests.post('https://www.runoob.com/try/ajax/demo_post2.php', data = myobj)
# 返回网页内容
print(x.text)

输出结果如下:

你好,RUNOOB Boy,今天过得怎么样?

requests.models.Response的常用属性

背景:做request 请求的时,返回数据为requests.models.Response。我们需要对返回结果做处理

Response响应的常用属性:

response.text # 响应回去的文本(字符串)
response.content # 响应回去的内容(二进制),一般用来爬取视频
response.status_code # 响应的状态码
response.url # 获取请求连接地址
response.cookies # 获取返回的cookies信息
response.cookies.get_dict() # 获取返回的cookies信息
response.request # 获取请求方式

将返回结果转化为josn格式,我们进行反序列化

response.json() # 将结果进行反序列化

爬取文档乱码问题

response.apparent_encoding # 文档的编码的方式(从HTML文档找)
response.encoding # 响应体编码方式
eg: response.encoding = response.apparent_encoding # 文档的声明方式

response.headers # 查看响应头
response.history # 重定向历史 即前一次请求的地址

参考链接:
[1] 链接1
[2] requests.models.Response的常用属性 2020.8

### 回答1: 我可以提供一些指导,使用Pythonrequests模块发送JSON数据的方法如下:首先,安装requests模块,然后使用requests.post()方法将JSON数据发送到你指定的URL。示例代码如下:import requestsurl = 'http://www.example.com/'data = {'key1': 'value1', 'key2': 'value2'}headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}response = requests.post(url, data=json.dumps(data), headers=headers) ### 回答2: 使用Pythonrequests模块发送JSON数据非常简单。下面是一个示例: 首先,我们需要导入requests模块: import requests 然后,我们可以使用requests的post方法来发送JSON数据: url = "http://example.com/api" # 需要发送JSON数据的API地址 data = {"name": "John", "age": 30} # 要发送JSON数据 headers = {"Content-Type": "application/json"} # 设置请求头,指定数据格式为JSON response = requests.post(url, json=data, headers=headers) 在上面的代码中,我们将url设置为要发送JSON数据的API地址,将data设置为要发送JSON数据。同时,我们还指定了请求头Content-Type为application/json,以告知服务器我们发送的是JSON格式的数据。 最后,我们使用requests的post方法发送请求,并将json参数设置为data,headers参数设置为headers。服务器将返回一个response对象,我们可以通过它来获取服务器的响应。 对于发送JSON数据,我们可以使用requests模块json参数来将数据转换为JSON格式,并自动设置Content-Type为application/json。 以上就是使用Pythonrequests模块发送JSON数据的简单示例。使用requests模块可以轻松地向服务器发送JSON数据,并处理服务器的响应。 ### 回答3: 使用pythonrequests模块发送JSON数据非常方便。 首先,需要导入requests模块:import requests 然后,准备要发送JSON数据,可以将字典转换为JSON字符串,例如:data = {"name": "小明", "age": 18} 接下来,使用requests模块的post方法发送JSON数据,同时指定请求头的Content-Type为application/json,例如: response = requests.post(url, json=data, headers={"Content-Type": "application/json"}) 其中,url为要发送请求的URL地址,data为要发送JSON数据,headers为请求头。 最后,可以通过response对象获取服务器的响应结果。例如,可以通过response.text来获取响应的文本结果,response.json()来获取响应的JSON结果。 完整的代码示例: import requests data = {"name": "小明", "age": 18} url = "http://example.com/api" response = requests.post(url, json=data, headers={"Content-Type": "application/json"}) if response.status_code == 200: print("请求成功") print(response.text) print(response.json()) else: print("请求失败") 以上就是使用pythonrequests模块发送JSON数据的简单示例。希望能对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值