爬虫处理payload请求
爬虫处理payload请求
在爬取网站的时候经常遇到post请求,对于一般的form_data参数的就很好处理,是不是遇到过下面的这种payload形式呢?
像这种payload类型的网站,需要由特定的处理方式处理。
处理方法:
import requests
import json
headers = {
“Content-Type”:”application/json;charset=UTF-8″,
“User-Agent”:”Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36″,
}
payload_data = {“token”: “”, “pn”: 20, “rn”: 20, “sdt”: “”, “edt”: “”, “inc_wd”: “”, “exc_wd”: “”, “fields”: “title”,
“cnum”: “001”, “sort”: “{\”infodatepx\”:\”0\”}”, “ssort”: “title”, “cl”: 200, “terminal”: “”,
“condition”: [{“fieldName”: “categorynum”, “likeType”: 2, “equal”: “003004002”}], “time”: [
{“fieldName”: “infodatepx”, “startTime”: “2021-01-07 00:00:00”,
“endTime”: “2021-04-07 23:59:59”}], “highlights”: “title”, “accuracy”: “”, “noParticiple”: “1”,
“isBusiness”: “1”}
url = “http://jsggzy.jszwfw.gov.cn/inteligentsearch/rest/inteligentSearch/getFullTextData”
resp = requests.post(url,headers=headers,data=json.dumps(payload_data))
与form_data的不同点是用json.dumps封装了一下
需要注意的点:如果是json格式,要在headers里加上”Content-Type”:”application/json;charset=UTF-8″
还有一种处理方法。将payload_data改写成”token=”\npn=20\nrn=20\nsd=” 这种形式,即参数之间加上\n,不需要json.dumps也能解决问题。