Scrapy爬取ajax加载页面且post提交参数是Request Payload的方法

本文介绍如何使用Scrapy发送POST请求并解析JSON响应,探讨Response中数据的处理技巧,包括编码问题解决方法及如何在请求间传递数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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. 回调函数的传值

  1. item的传递
    scrapy.Request方法里面加上:meta=({'item': item})参数
    函数的获取:response.meta['item']
  2. 参数传递
    可以使用cb_kwargs传值,参数的值是字典格式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值