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 随机无法保留位置信息?