rvest:如何找到所需的 css-选择器

rvest: how to find required css-selector

我正在尝试使用 rvest 抓取 在议会中举行的演讲的部分内容。 使用 css 选择器或 chrome 的检查器工具为我提供了一个选择器,但我无法检索预期的(任何)数据。据我所知,该站点也不是基于 java 等的,即不需要 RSelenium 等。

这里是 link:

library(tidyverse)
library(rvest)
library(xml2)

session_1 <- "https://www.parlament.gv.at/PAKT/VHG/XXVII/NRSITZ/NRSITZ_00001/fnameorig_796482.html"

x <- session_1 %>%  
  rvest::read_html() %>% 
  rvest::html_element("wordsection14") %>% 
  rvest::html_text()

最终,我希望能够使用 class 'wordsection*'.

获取所有元素中包含的文本

如有任何提示,将不胜感激。非常感谢。

tl;dr 问题不在于 css 选择器。这是编码。指定编码 = 'latin1'

read_html('https://www.parlament.gv.at/PAKT/VHG/XXVII/NRSITZ/NRSITZ_00001/fnameorig_796482.html', encoding = "latin1") %>% 
  html_nodes('[class^=WordSection]') %>%
  html_text() %>% 
  length()

卷曲:

您也可以使用 curl。

library(rvest)
library(curl)

text_info <- curl_fetch_memory("https://www.parlament.gv.at/PAKT/VHG/XXVII/NRSITZ/NRSITZ_00001/fnameorig_796482.html") %>%
  {rawToChar(.$content)} %>%
  .[[1]] %>%
  read_html() %>%
  html_nodes("[class^=WordSection]") %>%
  html_text()

CSS 选择器:

如果您使用以运算符 ^ 开头的 css 属性 = 值选择器来获取所有具有 class 值且以 WordSection 开头的节点。

鉴于有很多嵌套以避免重复 material 你可以决定使用 nth-child range selectors or other css selector combinations 来限制匹配列表。

编写一些自定义函数来管理字符串清理。

如果您愿意,当然可以使用不同的 css 选择器。