再scrapy 中 可以使用formdata 发送post请求 但是也仅限于formdata 方式的数据
但是如果post请求 要求传递json 单纯使用下列方式 是提取不出来出数据的
def start_requests(self):
for i in range(1000):
data={
"pageNum": i,
"pageSize": 10,
"tradeType": "01",
}
yield scrapy.Request(
method="POST",
url ="http://www.xxx.com",
body=json.dumps(data),
callback=self.parse,
)
需要加个headers
headers={
"Content-Type": "application/json"
}
注意: headers 加多了 依然会不成功 所以大家 尽量不要写太多请求头
源码如下
def start_requests(self):
for i in range(1000):
data={
"afficheSourceType": "",
"afficheTitle": "",
"pageNum": i,
"pageSize": 10,
"pubTime": "",
"regionCode": "",
"tradeClassify": "",
"tradeType": "01",
}
yield scrapy.Request(
url ="http://www.ahtba.org.cn/site/trade/affiche/pageList",
body=json.dumps(data),
callback=self.parse,
headers={
"Content-Type": "application/json"
}
)