(Python)requests模块post请求发送json类型数据的两种方式

在基于requests模块爬数据时,如果出现post请求中的数据为json格式的数据,可以使用两种方式来正确发送请求

  • import json模块,将需要传递的数据有json格式转换成字典类型,然后在调用requests.post()方法时,调用json模块的.dumps()方法完成json格式的数据发送,即response = requests.post(url=url, headers=headers, data=json.dumps(data))
  • 直接使用requests模块post方法,但是其中的参数不是data,而是json,给名叫json的参数传入json类型的值,此方式不需要引入json模块,即response = requests.post(url=url, headers=headers, json=json)

案例

在爬取荣耀商城门店信息的时候,发送的post请求为json类型的数据
在这里插入图片描述

方式1:

将json格式的数据转换成字典类型的数据,调用json.dumps()方法完成传递

import requests
import json
url = 'https://openapi.vmall.com/mcp/offlineshop/getShopList'
headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36'
}
# 将json类型的数据转换成字典类型的数据
data = {
"portal":2,"lang":"zh-CN","country":"CN","brand":1,"province":"山西","city":"太原","pageNo":1,"pageSize":20
}

# 调用json.dumps()方法,将数据以json格式传递
response = requests.post(url=url, headers=headers, data=json.dumps(data))
page_text = response.text

print(page_text)

方式2:

直接使用post方法,给参数json传入json类型的数据

import requests

url = 'https://openapi.vmall.com/mcp/offlineshop/getShopList'
headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36'
}
json = {"portal":2,"lang":"zh-CN","country":"CN","brand":1,"province":"山西","city":"太原","pageNo":1,"pageSize":20}

# 直接给post方法中的json参数赋值,赋json类型的数据
response = requests.post(url=url, headers=headers, json=json)
page_text = response.text

print(page_text)
发布了38 篇原创文章 · 获赞 43 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/qq_40272386/article/details/105658398