今天写一个爬虫脚本的时候遇到需要使用post这个request payload参数,但是由于之前用的requests库,轻松post便可完美爬取~改到scrapy时就不行
1.直接使用FromRequest报错:ValueError: not enough values to unpack (expected 2, got 1)
无论我怎么添加修改FromRequest其中的参数都不行,然后查了一下发现FromRequest并不支持传request payload,只能对付一下form data这种类型的参数~
2.查找到解决办法:直接Request中的body即可~
参数记得用json.dumps()转一下,不然类型不对~
自己写的话一般请求头记得加’Content-Type’: 'application/json’这个也是个坑,给你们标注一下~
最重要的是使用body~,具体如下
heards = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36',
'Content-Type': 'application/json',}
data1 = {"I_AS_ARGU1":"{}".format(hao),"I_AS_KIND":"BL","I_AS_COUNTRY_CD":""}
url = 'http://www.pancon.co.kr/pan/selectWeb212AR.pcl'
response = scrapy.Request(url=url,headers=heards,body=json.dumps(data1),callback=self.parse)
我需要的数据就出来了~
有问题私信我,在线接外包,除了犯法的啥都做~