最近在用 python 的 scrapy 写亚马逊详情页爬虫时候,遇到一个问题,就是抓取回来的数据,没有价格、FBA物流等数据,由于接触scrapy爬虫的时间并不长,特此记录一下。
一、问题描述
用scrapy 爬取亚马逊详情页信息数据,该链接是有价格数据,但是抓取回来就是没有价格。刚开始以为是遇到反爬了,所以更换了UA请求头,添加了cookie,甚至更换了代理IP,问题还是没有解决。
先给出结论:抓取不到是因为邮编显示中国,因此需要通过修改session的方式改变邮编地址。不想看分析过程的可以直接跳到第四点。
二、分析过程
重点是,发现固定有几个listing的价格是一直抓取不成功,如果是遇到反爬,也不可能只有这几个listing抓不到,所以判断一定是这些listing 有不一样的地方。
于是分别把抓取成功和不成功的listing页面数据全部复制下来。
1.正常的页面解析及爬取的页面文本


2.抓取失败的页面

也就是说,抓取不到价格的listing,返回的页面解析,根本就没有价格这个信息,那首先可以排除是xpath解析出错,或是页面标签发生变化,导致解析不到。
那么问题就是,scrapy的request请求返回的页面,一开始就是没有价格!
后来通过对比发现,因为亚马逊邮编定位是在中国,这些listing由于不能发货到中国,所以在国内访问该链接,是不显示价格,这就解释了为什么固定某些listing是抓取不到价格信息。
三、解决思路
“因此需要解决的问题就是把邮编改成当地邮编
那么邮编的数据是怎么传给亚马逊服务器?大致会有3种方式:
1.网址参数
2.cookie参数
3.session参数

本文记录了使用Python Scrapy爬虫抓取亚马逊详情页时遇到价格等信息缺失的解决过程。问题源于邮编显示为中国,导致无法显示部分商品信息。通过分析请求,发现邮编信息在session中。解决方案是修改session中的邮编,代码中通过设置cookie并重写中间件实现了这一功能,成功获取了所需数据。同时建议建立检测模块,以应对cookie过期情况。
最低0.47元/天 解锁文章
224

被折叠的 条评论
为什么被折叠?



