我经常从维基百科中提取表格。 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