【问题标题】:Rvest nodes undetected with html_nodes使用 html_nodes 未检测到 Rvest 节点
【发布时间】:2017-12-02 19:26:30
【问题描述】:

我不太明白为什么我不能在某些带有 Rvest 的网站上使用选择器。

例子:

url <- read_html("http://www.cbc.ca/news/politics")

headlines <- url %>%
html_nodes(".headline") %>%
html_text()

另一个例子:

library(RSelenium)

rD <- rsDriver(verbose = FALSE)
rD
remDr <- rD$client

url <- "http://www.cbc.ca/news/politics"
remDr$navigate(url)

remDr$getTitle()
remDr$getCurrentUrl()

webElem <- remDr$findElement(using = "class", value = 'headline')

webElem$getElementAttribute("class")

remDr$close()
rD$server$stop()

应该足够简单。当我查看结构时,标题位于班级标题下方。除此之外,还有类 card-content、card-content-top 但似乎没有 CSS 选择器和 xpath 的组合起作用。

【问题讨论】:

  • 我看不到课程标题或课程卡片内容 (?)
  • 当我在开发者控制台中查看页面时,它就在那里。即使在使用 SelectorGadget 时,它也是被识别的 css 选择器。

标签: css r rvest rselenium


【解决方案1】:

由于选择器包有一些问题(至少在 Debian 上),CSS 选择器可能无法在 rvest 中工作,请参阅此了解更多信息: https://github.com/sjp/selectr/issues/7

使用 SelectorGadget 和 Chrome 开发人员工具,我使用以下 xpath 从网页中查找和识别“标题”。可以在此处找到有关如何找到正确 xpath 的更多信息: https://medium.com/@peterjgensler/functions-with-r-and-rvest-a-laymens-guide-acda42325a77

library('rvest') 
library('magrittr') 
url <- read_html("http://www.cbc.ca/news/politics")


headlines <- url %>%   
html_nodes(xpath = '//*[contains(concat( " ", @class, " " ), concat( " ", "pinnableHeadline", " " ))]') %>% 
html_text()

headlines[1]
"On Trudeau's 2nd trip to China, time may be ripe to advance free 
trade"
headlines[2]
"Liberals want to be global leader on open government, but face complaints at home"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-06
    • 1970-01-01
    • 1970-01-01
    • 2018-07-15
    • 1970-01-01
    • 2021-12-11
    相关资源
    最近更新 更多