Próbuję zautomatyzować proces, który obejmuje pobieranie plików .zip z kilku stron internetowych i wyodrębnianie zawartych w nich plików .csv. Wyzwanie polega na tym, że nazwy plików .zip, a tym samym adresy linków, zmieniają się co tydzień lub co rok, w zależności od strony. Czy istnieje sposób na zeskanowanie bieżących adresów linków z tych stron, aby móc następnie przekazać te adresy do funkcji, która pobiera pliki?Użycie R do skasowania adresu linku pliku do pobrania ze strony internetowej?
Jedna z docelowych stron to this one. Plik, który chcę pobrać, to drugi punkt w nagłówku "Plik ukończenia w czasie rzeczywistym w całej Afryce 2015" - tzn. Skompresowany plik .csv. Kiedy piszę, plik ten jest oznaczony jako "plik Realtime 2015 All Africa (zaktualizowany 11 lipca 2015 r.) (Csv)" na stronie internetowej, a adres linku, który chcę, to http://www.acleddata.com/wp-content/uploads/2015/07/ACLED-All-Africa-File_20150101-to-20150711_csv.zip, ale to powinno się zmienić później, ponieważ dane są aktualizowane w każdy poniedziałek --- stąd moje wyzwanie.
Próbowałem, ale nie udało mi się zautomatyzować ekstrakcji tej nazwy pliku .zip za pomocą "rvest" i rozszerzenia selectorgadet w Chrome. Oto jak poszło:
> 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 w tym wezwanie do html_node()
pochodzi podkreślając tylko (CSV) część Realtime 2015 All Africa Plik (zaktualizowano 11 lipca 2015) (CSV) pola na zielono, a następnie kliknąć na tyle innych podświetlonych bitów strony, aby wyeliminować wszystkie żółte i pozostawić tylko czerwony i zielony.
Czy popełniłem mały błąd w tym procesie, czy też jestem na tym właśnie błędnym torze? Jak możesz zauważyć, mam zerowe doświadczenie z HTML i web-scrapingiem, więc naprawdę doceniam jakąś pomoc.
Spróbuj 'realtime.html%>% html_node (XPath = "/ html/body/div/div/div/div [1]/div/article/div/ul [1]/li [2]/a")%>% html_attr ("href") '. Użyłem Firebug do wyodrębnienia xpath. – lukeA
Tak, to działa, dziękuję bardzo. Teraz spróbuję dowiedzieć się, jak użyć firebug. – ulfelder
@lukeA Udało mi się użyć elementu Inspect Element in Chrome w przeglądarce, aby wyświetlić kod HTML drugiej strony z wybranym zestawem danych i na podstawie debugowanego przykładu, aby dowiedzieć się, jak napisać ścieżkę xpath, która działała w tym celu. Więc: jeszcze raz dziękuję! –
ulfelder