Scrapy - 无法在亚马逊上抓取评级数据

Posted

技术标签:

【中文标题】Scrapy - 无法在亚马逊上抓取评级数据【英文标题】:Scrapy - not able to scrape ratings data on Amazon 【发布时间】:2022-01-23 09:47:31 【问题描述】:

我正在尝试从亚马逊店面抓取评分数据。以以下链接为例 -

https://www.amazon.in/s?me=A2ABGQT3TTW1NZ&marketplaceID=A21TJRUUN4KGV

虽然我成功地抓取了姓名、评分(满分 5 分)、价格等数据点,但我无法抓取评分的数量。这存储在以下 -

844

def parse(self, response):
    for a in response.xpath("//div[@class='s-result-item s-asin sg-col-0-of-12 sg-col-16-of-20 sg-col s-widget-spacing-small sg-col-12-of-16']"):
        yield 
            'ASIN' : a.xpath("//@data-asin").get(),
            'Name' : a.xpath(".//span[@class='a-size-medium a-color-base a-text-normal']/text()").get(),
            'Rating' : a.xpath(".//span[@class='a-icon-alt']/text()").get(),
            'No. of Ratings' : a.xpath(".//span[@class='a-size-base']/text()").get(),
            'ASP' : a.xpath(".//span[@class='a-price-whole']/text()").get()
        

评分数量为

令人惊讶的是,它直到几天前都运行良好。请帮我解决这个问题。

谢谢!!!

【问题讨论】:

【参考方案1】:

改变这一行:

'No. of Ratings' : a.xpath(".//span[@class='a-size-base']/text()").get(),

进入

'No. of Ratings' : a.xpath(".//span[contains(@class, 'a-size-base')]/text()").get()

因为该跨度的类是“a-size-base a-color-base s-underline-text”

【讨论】:

嘿,这行得通,非常感谢!!!只需一个查询,当我检查 rating 元素时,我看到以下内容 - 846 你怎么认为这个类是“a-size-base a-color-基础 s 下划线文本”?非常感谢! 我认为您使用的是 firefox 或其他网络浏览器。如果您使用的是 firefox,您将看到“a-size-base”。如果您使用的是 chrome,您将看到“a-size-base a-color-base s-underline-text”。许多网站在不同的浏览器中更改它的类。 我在两个浏览器上看到的都是一样的,但我在 Safari 上看到“a-size-base a-color-base s-underline-text”。感谢您的解释,学到了一些新东西:)

以上是关于Scrapy - 无法在亚马逊上抓取评级数据的主要内容,如果未能解决你的问题,请参考以下文章

根据位置抓取亚马逊价格时,cookie 随机无法保留位置信息?

如何在抓取亚马逊时防止被列入黑名单[关闭]

<br> 标签使用 scrapy 和 python 搞砸了我的数据

爬虫-scrapy

爬虫框架之Scrapy

爬虫框架:scrapy