我試圖自動化一個過程,涉及從幾個網頁下載.zip文件並提取它們包含的.csvs文件。挑戰在於.zip文件名稱以及鏈接地址每週或每年更改一次,具體取決於頁面。有沒有辦法從這些頁面中抓取當前鏈接地址,然後我可以將這些地址提供給一個下載文件的函數?使用R從網頁上刮取可下載文件的鏈接地址?
其中一個目標網頁是this one。我想下載的文件是「2015 Realtime Complete All Africa File」標題下的第二個項目符號 - 即壓縮的.csv。正如我寫的那樣,該文件在網頁上標記爲「Realtime 2015 All Africa File(2015年7月11日更新)(csv)」,我想要的鏈接地址是http://www.acleddata.com/wp-content/uploads/2015/07/ACLED-All-Africa-File_20150101-to-20150711_csv.zip,但今天晚些時候應該會更改,因爲數據是每個星期一更新---因此我的挑戰。
我試過了,但未能在Chrome中以'rvest'和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從強調只是(CSV)的實時2015年全非文件(更新2015年7月11日)的綠色部分(CSV)字段,然後點擊進來在頁面的其他突出顯示的位上消除所有的黃色,只留下紅色和綠色。
我在這個過程中犯了一個小錯誤,還是我完全在錯誤的軌道上?如你所知,我對HTML和網頁抓取沒有經驗,所以我非常感謝一些幫助。
試着去'realtime.html%>%html_node(的XPath =「/ html/body/div/div/div/div [1]/div/article/div/ul [1]/li [2]/a」)%>%html_attr(「href」)'。我使用Firebug來提取xpath。 – lukeA
是的,這很有用,非常感謝。我現在去嘗試弄清楚如何使用螢火蟲。 – ulfelder
@lukeA我可以使用在Chrome中檢查元素,以查看帶有所需數據集的其他頁面的html,並根據調試的示例找出如何編寫適用於它的xpath。所以:再次感謝! –
ulfelder