如何提取下载链接并在 R 中下载文件?

Jan*_*ane 0 r rvest

我想提取链接并自动下载 Type='AA' 的第一条记录的文件。

我设法提取表格,但如何提取最后一列中“AA”类型的链接?


library(rvest)
library(stringr)

url <- "https://beta.companieshouse.gov.uk/company/02280000/filing-history"
wahis.session <- html_session(url)                                
r <-    wahis.session %>%
  html_nodes(xpath = '//*[@id="fhTable"]') %>%
  html_table(fill = T) 
Run Code Online (Sandbox Code Playgroud)

小智 5

我假设该网站可以让您自动抓取它,如果您不确定,请检查其 robots.txt 和网站的抓取政策。

实际上你还有很多工作要做。

  1. 如何仅提取特定节点而不是所有节点。
  2. 如何提取链接而不是覆盖的文本字符串。
  3. 如何一次下载多个文件并命名它们。
  4. 如何移至下一页并重复该过程。

该脚本应该可以帮助您从单个页面中提取所需的报告。如果您想制作一个脚本来从所有页面中提取它,我建议您查看有关网络抓取的教程,例如https://www.datacamp.com/community/tutorials/r-web-scraping-rvest

您可以查看的另一个软件包是Rcrawler,它将自动执行脚本的许多提取部分,但需要您学习其功能。

library(rvest)
library(stringr)

url <- "https://beta.companieshouse.gov.uk/company/02280000/filing-history"
url2 <- "https://beta.companieshouse.gov.uk"

wahis.session <- html_session(url)                                
r <-    wahis.session %>%
  html_nodes(xpath = '//*[@id="fhTable"]') %>%
  html_table(fill = T)

s <- wahis.session %>% 
  html_nodes(xpath = '//*[contains(concat( " ", @class, " " ), concat( " ",     "download", " " ))]') %>% 
  html_attr("href")

r <- r[[1]] %>% as_tibble %>% 
  mutate(link = paste0(url2, s)) %>% 
  filter(Type == "AA")

n <- paste0("report",seq_along(r$link), ".pdf")

for(i in seq_along(n)) {
  download.file(r$link[i], n[i], mode = "wb")
}
Run Code Online (Sandbox Code Playgroud)