r - 如何抓取包含在 R 中链接的子链接中的文本?
问题描述
我正在尝试抓取这个网站。
如您所见,您可以单击一个主链接和一系列标题来访问文本。最后我想得到的是主链接的所有这些子链接中的文本。我对网络抓取不是很熟悉,所以环顾四周,我认为是这样的:
library(rvest)
x <- read_html("https://www.ecb.europa.eu/press/pressconf/html/index.en.html")
x1 <- html_nodes(x, ".doc-title a") # this using selector gadget
然而,这种尝试严重失败。有没有人可以帮助我?
非常感谢!
解决方案
可以获取初始页面的链接文本:
library(RSelenium)
library(rvest)
shell('docker run -d -p 4445:4444 selenium/standalone-firefox')
remDr <- remoteDriver(remoteServerAddr = "localhost", port = 4445L, browserName = "firefox")
remDr$open()
remDr$navigate("https://www.ecb.europa.eu/press/pressconf/html/index.en.html")
# This is useful to load all the page
for(i in 1 : 100)
{
print(i)
remDr$executeScript(paste0("scroll(0, ", i * 2000, ")"))
}
Sys.sleep(5)
html_Content <- remDr$getPageSource()[[1]]
html_Link <- str_extract_all(string = html_Content, pattern = "/press/pressconf/[^<]*html")[[1]]
html_Link_En <- html_Link[str_detect(html_Link, "\\.en\\.html")]
links_To_Remove <- c("/press/pressconf/html/index.en.html", "/press/pressconf/visual-mps/html/index.en.html" )
html_Link_En <- html_Link_En[!(html_Link_En %in% links_To_Remove)]
html_Link_En <- unique(html_Link_En)
# Extract text from first link
# It is possible to use a for loop to get the text of all links ...
html_Content <- read_html(paste0("https://www.ecb.europa.eu", html_Link_En[1]))
html_Content %>% html_text()
推荐阅读
- c - 将0和1字符的字符串转换为十六进制字符串
- sql - 外键约束失败 - 即使我尝试手动添加数据
- angular - 是否可以在 Angular 应用程序中检索传入的 http 请求标头?
- c - 如何使用循环找到一对也加起来一定和的除数?
- excel - 对列表中的多个表执行操作
- r - 在 r 中另存为 jpeg 时,如何确保绘图不会被截断?
- python - 更新到 Mac OS Catalina、Spyder 3 错误
- java - 如何关闭在方法 JAVA 中打开的扫描仪
- gradle - 在 Gradle 中,api 配置暴露了依赖关系,而实现却没有,这到底意味着什么?
- c# - .net core COM 与 Excel 范围