1. 怎么发起请求
scrapy.FormRequest()目前还不支持Payload参数提交方法
可以采用request的post方式:
scrapy.Request(url, headers=headers, body=json.dumps(payload_data), callback=self.parse, method='POST')
json.dumps()
:将dict格式转化成str格式
2. Response
返回来的一般是json数据格式,或者列表形式,亦或者数据中插入了一些字符,比如:“\”等,需要仔细查看,找出规律解析。
- 可以使用
json.loads()
转换(和dumps()方法功能相反) 之后遍历取出需要的数据就可以了。 - 可以使用ast第三方库下的
ast.literal_eval(data_list)
转化成list,之后遍历取出数据。
一般数据出现乱码,将编码转换为utf-8就可以了。
记录一下一个小坑,编码格式是utf-8但是中文还是乱码,出现url编码。
解码方式:
from urllib import parse
data = parse.unquote(response.text)
这样中文就可以正常显示了
3. 回调函数的传值
- item的传递
scrapy.Request方法里面加上:meta=({'item': item})
参数
函数的获取:response.meta['item']
- 参数传递
可以使用cb_kwargs
传值,参数的值是字典格式。