首页 > 解决方案 > Scrapy 请求返回错误的货币

问题描述

我试图从这个网站上获取信息。一切都很好,除了价格。在网站和 html 中,价格以美元列出。但是当我运行下面的代码时,它会以英镑返回。

price = response.xpath('//*[@id="page"]/div[2]/div/div[1]/div[2]/div/div[2]/div/p').extract()

我尝试了以下不同的变体:

headers = {
    'USER_AGENT': "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36",
    'Accept-Language': 'en-US,en;q=0.9',
}

def start_requests(self):
    for url in self.start_urls:
        yield scrapy.Request(url=url, headers=headers, callback=self.parse, cookies={'hn.globale.currency': 'USD', 'hn.globale.country': 'US'})

但它总是以英镑的形式出现。我怎样才能改变它来获得美元?我也可以将产品数据作为 json 格式获取,但也都以 GBP 为单位。

标签: pythonweb-scrapingscrapy

解决方案


该页面全部使用 Javascript 动态构建并动态配置。如果您查看该页面,您会在左上角看到“USD”选项,但该文本不在源代码中。除非您在抓取时执行 Javascript,否则您无法获得转换。如果他们有 JSON API,则必须有一种配置方法,但他们必须告诉你。


推荐阅读