【发布时间】:2021-04-07 13:03:28
【问题描述】:
我正在尝试在任何亚马逊搜索中抓取产品及其价格,因此我正在使用 R 中的 rvest 库来做到这一点。
例如,对于这个搜索:
我想提取所有产品名称及其价格。我尝试了以下方法:
library(rvest)
link='https://www.amazon.com.mx/s?k=gtx+1650+super&__mk_es_MX=%C3%85M%C3%85%C5%BD%C3%95%C3%91&ref=nb_sb_noss_2'
simple=read_html(link)
simple %>% html_nodes("[class='a-size-base-plus a-color-base a-text-normal']") %>% html_text()
使用 Chrome,类 'a-size-base-plus a-color-base a-text-normal' 是 它存储的产品名称。
该代码运行良好,我得到了所有产品名称。所以,我试图用这个来获得他们的价格:
simple %>% html_nodes("[class='a-offscreen']") %>% html_text()
使用 Chrome,“a-offscreen”类是存储价格的位置。
该代码将搜索中的每个价格都返回给我,但如果您看过搜索,则并非所有产品都有价格。因此,该代码向我返回了带有价格的产品,而我无法将产品与其价格相匹配。
有没有办法让它成为可能?也许可以只过滤那些具有“a-offset”类的产品并获得它们的价格?
谢谢。
【问题讨论】:
-
我不知道这会有多大帮助,但我在开发用于抓取歌词的脚本时遇到了类似的问题,在 line 104 我有一个单独的变量来存储信息的每个部分,然后在整个刮擦后使用
cbind将它们组合起来,以维持秩序。要处理缺失的价格,请使用tryCatch。这将尝试查找特定值,但如果未找到,请使用NAMore on trycatch 之类的内容填充该字段 -
@Aman 我尝试了你所说的,我可以使用 xpath 编写一个像样的代码。我不知道 xpath 是如何工作的,但我做了一项研究,使用您的提示和 xpath 实用程序,我可以解决我的问题。非常感谢人:D
-
很高兴能为您提供帮助!干杯:)
标签: r web-scraping product amazon rvest