【Python技巧】【爬虫】请求头格式代表要传入的数据格式、requests.post方法中的data和json的区别

在请求中,header中有一项属性为数据传输类型:Content-Type 。在我们发送请求的时候,针对不同的传输数据类型,我们需要传入不同的参数

1. 当请求头的数据格式为application/x-www-form-urlencoded

当请求数据格式为表单的时候,我们的请求数据为字典,不能进行转换,传输的格式转换为键值对并按照 key1=val1&key2=val2 的方式进行编码,key 和 val 都进行了 URL 转码。

2. 当请求头的数据格式为Content-Type: application/json

表明我们要传入的参数是序列化后的 JSON 字符串。然而在python中,我们的参数往往写成以下格式:

json_data = {
    'attitude': [],
    'Range': '',
    'Type': [],
    'VideoType': [],
    'Channel': [],
    'Column': [],
    }

data就是我们要传的参数,python中是以字典的形式存在的,数据类型就是字典,但是传入的数据要求是json格式的字符串,因此传入的时候需要转换。

(1) 通过json.dumps将json_data数据转化成json格式

将我们传入的json_data参数通过json.dumps转换后就变成了json格式的字符串,如下:

import json
json_data = {
    'attitude': [],
    'Range': '',
    'Type': [],
    'VideoType': [],
    'Channel': [],
    'Column': [],
    }
data_json=json.dumps(data)
data=json.dumps(data_json)
re = requests.post(url=url, data=data,headers={
     "Content-Type":"application/json;charset=UTF-8"
    })

(2)json_data数据不做json.dumps转换处理时,用post函数的json参数

在data数据不做处理的时候,post请求头必须用json参数

import requests,json
url = 'http://172.243.25.8'
json_data = {
    'attitude': [],
    'Range': '',
    'Type': [],
    'VideoType': [],
    'Channel': [],
    'Column': [],
    }
re = requests.post(url=url, json=data)

你可能感兴趣的:(python技巧,python,爬虫)