我想提取链接并自动下载 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 和网站的抓取政策。
实际上你还有很多工作要做。
该脚本应该可以帮助您从单个页面中提取所需的报告。如果您想制作一个脚本来从所有页面中提取它,我建议您查看有关网络抓取的教程,例如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)