【问题标题】:R WebScraping Getting Extra Text when using RvestR WebScraping 使用 Rvest 时获取额外的文本
【发布时间】:2021-02-27 22:42:49
【问题描述】:

我正在尝试使用 R 和 RVest 网络抓取从 eBay 获取销售日期

网址是url

字面意思

https://www.ebay.com/sch/Star%20Wars%20%20BARC%20Speeder%20Bike%20Trooper%20Buzz%20-2009%20-Red%20-Obi-wan%20-Kenobi%20-Jesse%20-halmark%20-Funko%20-Pop%20-Black%20-snaptite%20-model%20-30th%20-Saga%20-Lego%20-McDonalds%20-McDonald%27s%20-Topps%20-Heroes%20-Playskool%20-Transformers%20-Titanium%20-Die-Cast%20-2003%20-2004%20-2005%20-2006%20-2007%20-2008%20-2012%20-2013%20%28Clone%20Wars%29&LH_Sold=1&LH_ItemCondition=3&_dmd=7&_ipg=200&LH_Complete=1&LH_PrefLoc=1

第一个售出日期的完整 xpath 是://*[@id="srp-river-results"]/ul/li[1]/div/div[2]/div[2]/div/span/span[1]

如果我使用它然后 html_text() 到这条路径,我什么也得不到。 character(0)

当我删除跨度并添加 POSITIVE 节点时,我得到了日期,但还有一堆额外的文本。

R 代码:

readHTML <- url %>%
            read_html()

    SoldDate <- readHTML %>%
        html_nodes(xpath='//*[@id="srp-river-results"]/ul/li[1]/div/div[2]/div[2]/div') %>%
        html_nodes("[class='POSITIVE']") %>%
        html_text(trim = TRUE)

结果:

"SoYlPd N Feb 316,Z RM9USI2021"

我应该得到:

"Feb 16, 2021"

【问题讨论】:

  • html 并不总是按照您的图像显示;在其他时候(例如,我第一次访问该页面时).s-item__title--tagblock__COMPLETED .POSITIVE 标识的节点具有子跨度节点。看起来您可以通过使用类/部分类值从中获取适当的 visible 节点;但是,在我有时间编写 css 模式以完成测试之前,html 发生了变化。我想尝试使用离线副本并编写逻辑来测试该顶级节点是否有子节点,如果有则执行一个模式,否则只需使用目标节点。
  • 我使用您的代码将SoldDate 设为"Sold Jan 11, 2021"

标签: r web-scraping rvest


【解决方案1】:

这里有 2 个很好的答案,其中包含有关该问题的更多详细信息: Rvest Split Data by Class Name where the class names change

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-03
    • 2020-01-01
    • 2021-01-25
    • 2016-12-08
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    相关资源
    最近更新 更多