我已尝试抓取新闻网站的内容(“标题”,“内容”等),但我使用的节点未返回该内容。
我尝试了不同的节点/标签,但是似乎都不起作用。我也使用了SelectorGadget,但没有任何结果。我曾使用相同的策略来抓取其他网站,但没有任何问题。
library(rvest)
url_test <- read_html('https://lasillavacia.com/silla-llena/red-de-la-paz/historia/las-disidencias-son-fruto-de-anos-de-division-interna-de-las-farc')
content_test <- html_text(html_nodes(url_test, ".article-body-mt-5"))
我也尝试使用xpath
代替css class
,但没有结果。
content_test <- html_text(html_nodes(url_test, ".article-date"))
例如,即使我尝试从网站页面上抓取所有<h>
,我也会得到character(0)
可能是什么问题?感谢您的帮助!
答案 0 :(得分:1)
由于内容是通过javascript加载到页面上的,因此我使用RSelenium抓取了数据并且可以正常工作
library(RSelenium)
#Setting the remote browser
remDr <- RSelenium::remoteDriver(remoteServerAddr = "192.168.99.100",
port = 4444L,
browserName = "chrome")
remDr$open()
url_test <- 'https://lasillavacia.com/silla-llena/red-de-la-paz/historia/las-disidencias-son-fruto-de-anos-de-division-interna-de-las-farc'
remDr$navigate(url_test)
#Checking if the website page is loaded
remDr$screenshot(display = TRUE)
#Getting the content
content_test <- remDr$findElements(using = "css selector", value = '.article-date')
content_test <- sapply(content_test, function(x){x$getElementText()})
> content_test
[[1]]
[1] "22 de Septiembre de 2018"
答案 1 :(得分:1)
两件事。
您的CSS选择器错误。应该是:
".article-body.mt-5"
数据被动态加载并作为json返回。您可以在“网络”选项卡中找到端点。无需使用硒。
library(jsonlite)
data <- jsonlite::read_json('https://lasillavacia.com/silla_llena_api/get?path=/contenido-nodo/68077&_format=hal_json')
body
是html,因此您可以使用html解析器。以下是一个简单的文本转储。您将通过选择节点进行优化。
library(rvest)
read_html(data[[1]]$body) %>% html_text()