使用 R 从网页中抓取可下载文件的 link 地址?
Using R to scrape the link address of a downloadable file from a web page?
我正在尝试自动化一个过程,该过程涉及从几个网页下载 .zip 文件并提取其中包含的 .csvs。挑战在于 .zip 文件名以及 link 地址每周或每年更改一次,具体取决于页面。有没有办法从这些页面中抓取当前 link 地址,然后我可以将这些地址提供给下载文件的函数?
其中一个目标页面是 this one. The file I want to download is the second bullet under the header "2015 Realtime Complete All Africa File"---i.e., the zipped .csv. As I write, that file is labeled "Realtime 2015 All Africa File (updated 11th July 2015)(csv)" on the web page, and the link address that I want is http://www.acleddata.com/wp-content/uploads/2015/07/ACLED-All-Africa-File_20150101-to-20150711_csv.zip,但今天晚些时候应该会改变,因为数据每周一更新 --- 因此我的挑战。
我试过但未能自动提取带有 'rvest' 和 Chrome 中的 selectorgadet 扩展名的 .zip 文件名。这是怎么回事:
> library(rvest)
> realtime.page <- "http://www.acleddata.com/data/realtime-data-2015/"
> realtime.html <- html(realtime.page)
> realtime.link <- html_node(realtime.html, xpath = "//ul[(((count(preceding-sibling::*) + 1) = 7) and parent::*)]//li+//li//a")
> realtime.link
[1] NA
调用 html_node()
时的 xpath 仅以绿色突出显示 Realtime 2015 All Africa File(2015 年 7 月 11 日更新)(csv) 字段的 (csv) 部分,然后单击足够多的其他字段突出显示页面的部分以消除所有黄色,只留下红色和绿色。
是我在那个过程中犯了一个小错误,还是我完全走错了路?如您所知,我对 HTML 和网络抓取的经验为零,因此非常感谢您的帮助。
我认为您试图在单个 xpath 表达式中做太多事情 - 我会通过一系列较小的步骤来解决问题:
library(rvest)
library(stringr)
page <- html("http://www.acleddata.com/data/realtime-data-2015/")
page %>%
html_nodes("a") %>% # find all links
html_attr("href") %>% # get the url
str_subset("\.xlsx") %>% # find those that end in xlsx
.[[1]] # look at the first one
我正在尝试自动化一个过程,该过程涉及从几个网页下载 .zip 文件并提取其中包含的 .csvs。挑战在于 .zip 文件名以及 link 地址每周或每年更改一次,具体取决于页面。有没有办法从这些页面中抓取当前 link 地址,然后我可以将这些地址提供给下载文件的函数?
其中一个目标页面是 this one. The file I want to download is the second bullet under the header "2015 Realtime Complete All Africa File"---i.e., the zipped .csv. As I write, that file is labeled "Realtime 2015 All Africa File (updated 11th July 2015)(csv)" on the web page, and the link address that I want is http://www.acleddata.com/wp-content/uploads/2015/07/ACLED-All-Africa-File_20150101-to-20150711_csv.zip,但今天晚些时候应该会改变,因为数据每周一更新 --- 因此我的挑战。
我试过但未能自动提取带有 'rvest' 和 Chrome 中的 selectorgadet 扩展名的 .zip 文件名。这是怎么回事:
> library(rvest)
> realtime.page <- "http://www.acleddata.com/data/realtime-data-2015/"
> realtime.html <- html(realtime.page)
> realtime.link <- html_node(realtime.html, xpath = "//ul[(((count(preceding-sibling::*) + 1) = 7) and parent::*)]//li+//li//a")
> realtime.link
[1] NA
调用 html_node()
时的 xpath 仅以绿色突出显示 Realtime 2015 All Africa File(2015 年 7 月 11 日更新)(csv) 字段的 (csv) 部分,然后单击足够多的其他字段突出显示页面的部分以消除所有黄色,只留下红色和绿色。
是我在那个过程中犯了一个小错误,还是我完全走错了路?如您所知,我对 HTML 和网络抓取的经验为零,因此非常感谢您的帮助。
我认为您试图在单个 xpath 表达式中做太多事情 - 我会通过一系列较小的步骤来解决问题:
library(rvest)
library(stringr)
page <- html("http://www.acleddata.com/data/realtime-data-2015/")
page %>%
html_nodes("a") %>% # find all links
html_attr("href") %>% # get the url
str_subset("\.xlsx") %>% # find those that end in xlsx
.[[1]] # look at the first one