我在amazon.de
的抓取过程中发现了以下问题。在收集过程中,它(amazon
)根据当前(脚本)位置显示信息,因此某些项目不可用,因为其他价格与原始价格不同。
我有以下scrapy
代码,用于更改位置和刮取数据:
class AmazonSpider(BaseSpider):
name = 'amazon'
allowed_domains = ['www.amazon.de']
start_urls = ['https://www.amazon.de/']
def parse(self, response):
data = {
'locationType': 'LOCATION_INPUT',
'zipCode': '10115',
'storeContext': 'drugstore',
'deviceType': 'web',
'pageType': 'Detail',
'actionSource': 'glow',
'almBrandId': 'undefined'
}
yield scrapy.FormRequest(
url='https://www.amazon.de/gp/delivery/ajax/address-change.html',
formdata=data,
callback=self.parse_pages
)
def parse_pages(self, response):
url = 'https://www.amazon.de/-/en/Filter-Computer-Glasses-Headache-Vintage/dp/B091FYYDXB/ref=sr_1_95?dchild=1&keywords=kopfschmerzen&qid=1630410090&s=drugstore&sr=1-95'
yield response.follow(
url=url,
dont_filter=True,
callback=self.parse_product
)
但是即使我们执行位置改变呼叫address-change
,它仍然显示当前位置的错误信息。
你能帮我一下吗?看起来我好像少了一些参数或者别的什么
1条答案
按热度按时间a7qyws3x1#
我有同样的问题,我的解决方案是使用代理管理器,如zenscrape,与IP地址设置为国家,我想从数据。如果你找到一个解决方案与scrapy请求和地址更改,让我知道!