我經常從維基百科中提取表格。 Excel的Web導入在維基百科上無法正常工作,因爲它將整個頁面視爲表格。在谷歌電子表格,我可以輸入:在R中導入維基百科表格
=ImportHtml("http://en.wikipedia.org/wiki/Upper_Peninsula_of_Michigan","table",3)
這個功能將下載第三表,其中列出了密歇根州的UP,從該頁面的所有的縣。
R裏有類似的東西嗎?或者可以通過用戶定義的函數創建?
我經常從維基百科中提取表格。 Excel的Web導入在維基百科上無法正常工作,因爲它將整個頁面視爲表格。在谷歌電子表格,我可以輸入:在R中導入維基百科表格
=ImportHtml("http://en.wikipedia.org/wiki/Upper_Peninsula_of_Michigan","table",3)
這個功能將下載第三表,其中列出了密歇根州的UP,從該頁面的所有的縣。
R裏有類似的東西嗎?或者可以通過用戶定義的函數創建?
功能readHTMLTable
在包XML
是理想的。
嘗試以下操作:
library(XML)
doc <- readHTMLTable(
doc="http://en.wikipedia.org/wiki/Upper_Peninsula_of_Michigan")
doc[[6]]
V1 V2 V3 V4
1 County Population Land Area (sq mi) Population Density (per sq mi)
2 Alger 9,862 918 10.7
3 Baraga 8,735 904 9.7
4 Chippewa 38,413 1561 24.7
5 Delta 38,520 1170 32.9
6 Dickinson 27,427 766 35.8
7 Gogebic 17,370 1102 15.8
8 Houghton 36,016 1012 35.6
9 Iron 13,138 1166 11.3
10 Keweenaw 2,301 541 4.3
11 Luce 7,024 903 7.8
12 Mackinac 11,943 1022 11.7
13 Marquette 64,634 1821 35.5
14 Menominee 25,109 1043 24.3
15 Ontonagon 7,818 1312 6.0
16 Schoolcraft 8,903 1178 7.6
17 TOTAL 317,258 16,420 19.3
readHTMLTable
的HTML頁面的每個元素返回的data.frame
的List。您可以使用names
獲取有關每個元素的信息:
> names(doc)
[1] "NULL"
[2] "toc"
[3] "Election results of the 2008 Presidential Election by County in the Upper Peninsula"
[4] "NULL"
[5] "Cities and Villages of the Upper Peninsula"
[6] "Upper Peninsula Land Area and Population Density by County"
[7] "19th Century Population by Census Year of the Upper Peninsula by County"
[8] "20th & 21st Centuries Population by Census Year of the Upper Peninsula by County"
[9] "NULL"
[10] "NULL"
[11] "NULL"
[12] "NULL"
[13] "NULL"
[14] "NULL"
[15] "NULL"
[16] "NULL"
一個簡單的方法來做到這一點是使用RGoogleDocs
接口有谷歌文件做轉換爲你:
http://www.omegahat.org/RGoogleDocs/run.html
然後,您可以使用谷歌=ImportHtml
文檔功能及其所有預建造了魔法。
感謝您的答覆。我會通過文檔閱讀。 – karlos
下面是與安全(HTTPS)鏈接有效的解決方案:
install.packages("htmltab")
library(htmltab)
htmltab("http://en.wikipedia.org/wiki/Upper_Peninsula_of_Michigan",3)
上Andrie大廈的答案,解決SSL。如果你可以帶一件其他庫的依賴關係:
library(httr)
library(XML)
url <- "https://en.wikipedia.org/wiki/Upper_Peninsula_of_Michigan"
r <- GET(url)
doc <- readHTMLTable(
doc=content(r, "text"))
doc[6]
可能重複http://stackoverflow.com/questions/1395528/scraping-html-tables-into-r-data-frames-using-the-xml-package – Ramnath
@DWin簡單,是的;但重複性/可重複性?沒有。是不是一個腳本都做得很好? – karlos
@Ramnath我沒有看到該線程,但該線程提供的解決方案確實有效:readHTMLTable(theurl)和tables [3]。感謝分享。將不得不弄清楚如何將結果轉換爲適當的框架 – karlos