Использование R для очистки адреса ссылки загружаемого файла с веб-страницы?

Я пытаюсь автоматизировать процесс, который включает загрузку .zip-файлы с нескольких веб-страниц и извлечение .они их содержат. Проблема в том, что ... имена zip-файлов и, следовательно, адреса ссылок меняются еженедельно или ежегодно в зависимости от страницы. Есть ли способ очистить текущие адреса ссылок с этих страниц, чтобы затем я мог передать эти адреса функции, которая загружает файлы?

одной из целевых страниц этот. Файл I хотите загрузить второй пуля под заголовком "2015 в реальном времени завершить все файл Африки" - - - то есть, на молнии .csv. Когда я пишу, этот файл помечен "Realtime 2015 All Africa File (обновлено 11 июля 2015) (csv)" на веб-странице, и адрес ссылки, который я хочу,http://www.acleddata.com/wp-content/uploads/2015/07/ACLED-All-Africa-File_20150101-to-20150711_csv.zip, но это должно измениться позже сегодня, потому что данные обновляются каждый понедельник - - - следовательно, мой вызов.

Я попытался, но не смог автоматизировать извлечение этого .имя zip-файла с rvest и selectorgadet расширение в 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() пришел от выделения только (csv) часть Realtime 2015 All Africa File (обновлено 11 июля 2015 года) (csv) поле зеленым цветом, а затем нажав на достаточно других выделенных битов страницы, чтобы устранить все желтые и оставить только красный и зеленый.

Я сделал небольшую ошибку в этом процессе, или я просто полностью на ложном пути сюда? Как вы можете сказать, у меня нулевой опыт работы с HTML и веб-выскабливание, я был бы очень признателен некоторую помощь.

1 ответов


Я думаю, что вы пытаетесь сделать слишком много в одном выражении 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