对此有很多疑问,但是找不到我想要的答案。
希望使用类.quoteText
提取特定的文本,该类对我的代码有效,但是还提取.quoteText
内的所有子节点:
url <- "https://www.goodreads.com/quotes/search?page=1&q=simone+de+beauvoir&utf8=%E2%9C%93"
quote_text <- function(html){
path <- read_html(html)
path %>%
html_nodes(".quoteText") %>%
html_text(trim = TRUE) %>%
str_trim(side = "both") %>%
unlist()
}
quote_text(url)
结果包含文本,但也包含每个子节点!
这是检查器工具显示的内容。我要查找的是突出显示的行,而不是同一代码下的子行。
必须有一种方法只能刮掉那条线,不是吗?还是我需要收集该行,并用str_extract
/正则表达式删除其余行?
答案 0 :(得分:2)
看起来CSS选择器不仅仅支持获取所选节点的立即文本,而xpath
却支持。我们可以调整您的功能,以仅使用
quote_text <- function(html){
path <- read_html(html)
path %>%
html_nodes(xpath=paste(selectr::css_to_xpath(".quoteText"), "/text()") %>%
html_text(trim = TRUE) %>%
str_trim(side = "both") %>%
unlist()
}
我将CSS选择器转换为xpath一个,然后附加“ / text()”以获取元素的文本节点。