Klaydice中文网

scrapy爬虫:scrapy.FormRequest中formdata参数详解
领取MOLI红包
栏目分类
Klaydice中文网
Zephyr Protocol中文网
你的位置:Klaydice中文网 > Zephyr Protocol中文网 > scrapy爬虫:scrapy.FormRequest中formdata参数详解
scrapy爬虫:scrapy.FormRequest中formdata参数详解
发布日期:2025-01-03 18:50    点击次数:74
1. 背景 在网页爬取的时候,有时候会使用scrapy.FormRequest向目标网站提交数据(表单提交)。参照scrapy官方文档的标准写法是: 但是,当表单提交数据myFormData 是形如字典内嵌字典的形式,又该如何写? 2. 案例 — 参数为字典 在做亚马逊网站爬取时,当进入商家店铺,爬取店铺内商品列表时,发现采取的方式是ajax请求,返回的是json数据。 请求信息如下: 响应信息如下: 如上图所示,From Data中的数据包含一个字典: 在amazon中实际使用的构造方法如下: 3. 原理分析 举例来说,目前有如下一笔数据: 从网页上,可以看到请求数据如下: Field={"pageIdx":99,"size":"10"}&func=nextPage 第一种,按照如下方式发出请求,结果如下(正确): 第二种,按照如下方式发出请求,结果如下(错误,无法获取到正确的数据): 我们跟踪看一下scrapy中的源码: 分析过程如下: 解决方案: 就是将字典当成普通的字符串,然后编码(转换成bytes),进行传输,到达服务器端之后,服务器会反过来进行解码,得到这个字典字符串。然后服务器按照Dict进行解析。 拓展:对于其他特殊类型的数据,都按照这种方式打包成字符串进行传递。 4. 补充1 ——参数类型 formdata的 参数值 必须是unicode , str 或者 bytes object,不能是整数。 案例: 原理部分(源代码): 5. 补充2 ——参数为中文 formdata的 参数值 必须是unicode , str 或者 bytes object,不能是整数。 以1688网站搜索产品为案例: 搜索信息如下(搜索关键词为:动漫周边): 可以看到 动漫周边 ==