rvest 函数 read_html_live() 不允许 html_elements() 正确读取

问题描述 投票:0回答:1

虽然 read_html_live() 确实返回一个似乎包含所有相关“位”的节点集,但我无法在其上使用 html_elements() (即使相同的网站和相同的 xpath,使用 more 可以完美地工作)传统的 read_html)。

我有使用各种其他库进行网页抓取的经验,但我是一个相对较新的 rvest 转换者,所以完全有可能我错过了一些明显的东西。

下面的最小工作示例:

library(rvest) x <- read_html("https://www.ngaarawhetu.org/news/") y <- read_html_live("https://www.ngaarawhetu.org/news/") x_ele <- html_elements(x, xpath = "//link[@rel = 'alternate']") # Just to demonstrate - doesn't seem to work with anything y_ele <- html_elements(y, xpath = "//link[@rel = 'alternate']") print(x_ele) print(y_ele)
“x”版本使用 read_html(),返回预期值:

{xml_nodeset (5)} [1] <link rel="alternate" type="application/rss+xml" title="Ngā Ara Whetū » Feed" href="https://www.ngaarawhetu.org/feed/ ... [2] <link rel="alternate" type="application/rss+xml" title="Ngā Ara Whetū » Comments Feed" href="https://www.ngaarawhetu. ... [3] <link rel="alternate" type="application/json" href="https://www.ngaarawhetu.org/wp-json/wp/v2/pages/113">\n [4] <link rel="alternate" type="application/json+oembed" href="https://www.ngaarawhetu.org/wp-json/oembed/1.0/embed?url=h ... [5] <link rel="alternate" type="text/xml+oembed" href="https://www.ngaarawhetu.org/wp-json/oembed/1.0/embed?url=https%3A% ...
而“y”版本,使用 read_html_live() 不会返回任何结果:

{xml_nodeset (0)}
对于这个特定的网站,我希望 html_elements() 对于两个对象类(xml_document/xml_node 与 LiveHTML/R6)返回相同的结果。

r xpath rvest
1个回答
0
投票
根据上面 margusl 的评论,答案是将引号从 html_elements(y, xpath = "//link[@rel = 'alternate']") 交换为 html_elements(y, xpath = '//link[@rel =“备用”]')。

© www.soinside.com 2019 - 2024. All rights reserved.