【发布时间】:2021-02-27 22:42:49
【问题描述】:
我正在尝试使用 R 和 RVest 网络抓取从 eBay 获取销售日期
网址是url
字面意思
第一个售出日期的完整 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