r - 使用R从网页中抓取可下载文件的链接地址?

标签 r web-scraping rvest

我正在尝试自动化一个过程,该过程涉及从几个网页下载 .zip 文件并提取它们包含的 .csvs。挑战在于 .zip 文件名以及链接地址每周或每年更改一次,具体取决于页面。有没有办法从这些页面中抓取当前链接地址,以便我可以将这些地址提供给下载文件的函数?

目标页面之一是 this one .我要下载的文件是标题“2015 Realtime Complete All Africa File”下的第二个项目符号——即压缩的 .csv。正如我写的那样,该文件在网页上标记为“实时 2015 年全非洲文件(2015 年 7 月 11 日更新)(csv)”,我想要的链接地址是 http://www.acleddata.com/wp-content/uploads/2015/07/ACLED-All-Africa-File_20150101-to-20150711_csv.zip ,但今天晚些时候应该会改变,因为数据每周一更新——这就是我的挑战。

我尝试但未能使用“rvest”和 selectorgadet 自动提取该 .zip 文件名Chrome 中的扩展程序。这是怎么回事:

> 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

该调用中的 xpath html_node()来自仅突出显示 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

关于r - 使用R从网页中抓取可下载文件的链接地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31517121/

相关文章:

R dplyr::mutate - 添加返回列表中的所有元素

python - 是否可以从 Scrapy 中的特定 Spider 的管道中访问统计信息?

r - 抓取不同网站中元素数量不断变化的自由文本

r - 是否可以在特定文本字符串之后抓取一系列节点?

r - 创建逗号分隔向量

javascript - 用 R 抓取 javascript

r - 使用 rvest 和 R 抓取 XHR 动态页面

r - 使用 R 从网页中提取元描述

javascript - networkD3::sankeyNetwork 中的 R-自定义工具提示

python - Selenium Python = 在无限滚动中单击按钮 "ShowMore"时出现问题