從HTML網站的HTML表格中刮取數據是很酷且容易的。但是,如果網站沒有用html編寫,並且需要瀏覽器顯示相關信息,我該如何執行此任務如果它是一個asp網站或數據不在代碼中,但通過java代碼進來?用R刮非html網站?
喜歡的話就在這裏:http://www.bwea.com/ukwed/construction.asp。
使用VBA Excel的一個可以寫,打開一個功能,IE會調用網站,然後基本上覆制和粘貼網站的內容。有沒有機會做類似於R的事情?
從HTML網站的HTML表格中刮取數據是很酷且容易的。但是,如果網站沒有用html編寫,並且需要瀏覽器顯示相關信息,我該如何執行此任務如果它是一個asp網站或數據不在代碼中,但通過java代碼進來?用R刮非html網站?
喜歡的話就在這裏:http://www.bwea.com/ukwed/construction.asp。
使用VBA Excel的一個可以寫,打開一個功能,IE會調用網站,然後基本上覆制和粘貼網站的內容。有沒有機會做類似於R的事情?
托馬斯評論道,該網站只提供HTML。有些網站使用JavaScript通過AJAX調用獲取值並將它們動態插入到文檔中 - 這些將不會通過簡單的抓取工作。這些技巧就是使用JavaScript調試器來查看AJAX調用的內容,並從請求和響應中對它們進行逆向工程。
最難的事情將是Java小應用程序驅動的網站,但幸運的是這是罕見的。這些可能通過任何網絡機制獲取他們的數據,並且您必須通過檢查網絡流量來反向設計所有這些數據。
即使IE/VBA會失敗,如果它的Java小程序,我想。
此外,不要混淆Java和JavaScript。
我認爲當他在同一句話中提到ASP和Java時,他指的是JSP或Java服務器頁面,而不是Javascript。 – adamleerich
這是正常的HTML,與具有刮數據清理後的相關聯的正常麻煩。
下面的伎倆:
readHTMLTable
閱讀的頁面中包XML
代碼:
x <- readHTMLTable("http://www.bwea.com/ukwed/construction.asp",
as.data.frame=TRUE, stringsAsFactors=FALSE)
dat <- x[[5]]
names(dat) <- unname(unlist(dat[1, ]))
得到的數據:
dat <- dat[-1, ]
'data.frame': 39 obs. of 10 variables:
$ Date : chr "September 2011" "August 2011" "August 2011" "August 2011" ...
$ Wind farm : chr "Baillie Wind farm - Bardnaheigh Farm" "Mains of Hatton" "Coultas Farm" "White Mill (Coldham ext)" ...
$ Location : chr "Highland" "Aberdeenshire" "Nottinghamshire" "Cambridgeshire" ...
$ Power(MW) : chr "2.5" "0.8" "0.33" "2" ...
$ Turbines : chr "21" "3" "1" "7" ...
$ MW Capacity : chr "52.5" "2.4" "0.33" "14" ...
$ Annual homes equiv*.: chr "29355" "1342" "185" "7828" ...
$ Developer : chr "Baillie" "Eco2" "" "COOP" ...
$ Latitude : chr "58 02 52N" "57 28 11N" "53 04 33N" "52 35 47N" ...
$ Longitude : chr "04 07 40W" "02 30 32W" "01 18 16W" "00 07 41E" ...
它仍然正在傳送HTML,所以從客戶的角度來看,不應該有靜態和動態創建的頁面之間的任何差別。 – Thomas
這個問題的前提並不是事實。它需要被編輯。 – adamleerich