虽然 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)返回相同的结果。