2011-09-13 4 views
8
にインポートする

私は定期的にウィキペディアからテーブルを抽出します。 ExcelのWebインポートは、ページ全体を表として扱うため、wikipediaでは正しく機能しません。ウィキペディアのテーブルをR

=ImportHtml("http://en.wikipedia.org/wiki/Upper_Peninsula_of_Michigan","table",3) 

をして、この機能はそのページからミシガンのUP、すべての郡が一覧表示されます第三のテーブルを、ダウンロードします:Googleスプレッドシートでは、私はこれを入力することができます。

Rに類似したものはありますか?またはユーザー定義関数を使用して作成できますか?

+1

を可能重複http://stackoverflow.com/questions/1395528/scraping-html-tables-into-r-data-frames-using-the-xml-package – Ramnath

+1

@DWin simple、yes;反復性/再現性?いいえ。すべての素晴らしいことを行うための1つのスクリプトではありませんか? – karlos

+0

@Ramnath私はそのスレッドを見たことがありませんでしたが、そのスレッドで提供されている解決策は動作します:readHTMLTable(theurl)とtables [3]。それを共有してくれてありがとう。あなたの返信のために、結果を適切なフレーム – karlos

答えて

9

XMLの機能readHTMLTableがこれに最適です。

は、以下のことを試してみてください。

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のリストを返します。あなたは、各要素についての情報を取得するために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" 
+0

ありがとう、アンドリー。私はこの解決策が好きです。 – karlos

+1

私は 'readHTMLTable(doc =" https://en.wikipedia.org/wiki/Gross_domestic_product ")'というコードを試して、XMLコンテンツがXMLではないように見せました。 '' https'ができることを推測しています問題になる、それを回避する方法は? – Konrad

+5

このソリューションは、Wikipediaがセキュリティで保護された接続に移行した後は機能しなくなりました。どのようにそれを動作させるために任意の手掛かり? – Shambho

2
それを行うための一つの簡単な方法は、あなたのための変換を行うには、Googleドキュメントを持っている RGoogleDocsインタフェースを使用することです

http://www.omegahat.org/RGoogleDocs/run.html

あなたはそのすべての前で=ImportHtml Googleドキュメントの機能を使用することができます建てられた魔法。

+0

に変換する方法を理解する必要があります。私はその文書を読むでしょう。 – karlos

4

ここでは、セキュア(HTTPS)リンクで機能するソリューションです:

install.packages("htmltab") 
library(htmltab) 
htmltab("http://en.wikipedia.org/wiki/Upper_Peninsula_of_Michigan",3) 
2

は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] 
関連する問題