2016-02-29 9 views
5

私はRを使用してthis siteからテーブルをウェブスクレイプしています。IISベースのウェブサイトをスクレイピングするウェブ

ライブラリrvestを使用しています。

#install.packages("rvest", dependencies = TRUE) 
library(rvest) 
OPMpage <- read_html("https://www.opm.gov/policy-data-oversight/data-analysis-documentation/federal-employment-reports/historical-tables/total-government-employment-since-1962/") 

私はこのエラーが表示されます。私は間違って

Error in open.connection(x, "rb") : HTTP error 403.

何をしているのですか?

+0

[https://en.wikipedia.org/wiki/HTTP_403](https://en.wikipedia.org/wiki/HTTP_403)を参照してください。必ずしも道路の終わりではありませんが、確かに障害物です。 – alistaire

答えて

0

read_htmlまたはhtmlのためのあなたのフォーマットが正しいか:

library(rvest) 
lego_movie <- read_html("http://www.imdb.com/title/tt1490017/") 
lego_movie <-  html("http://www.imdb.com/title/tt1490017/") 

しかし、ページまたはあなたがこすりしようとしているページの一部のいずれかをこすることはできませんので、あなたが403を取得しています。

あなたはvignette("selectorgadget")を参照してrvestと一緒にselectorgadgetを使用する必要があります。

http://blog.rstudio.org/2014/11/24/rvest-easy-web-scraping-with-r/

しかし、可能性が高く、それだけで掻き取りするためのものだページはありません。しかし、私はバラク・オバマと新しい米国のチーフ・データ・サイエンティスト、DJパティルが最近、容易にインポートできるようにその種の米国政府データを入手するためにcentral hubを出したと思います。

+0

'?html':' 'html'は非推奨です:代わりに' read_html() 'を使用してください。" – alistaire

+0

_please_スクレイピングの参考例としてIMDBは使用しません。あなたは100%、人々に倫理に反して潜在的な法的措置を講じるよう求めています。私は、pkgビネットやRStudioがそれを使用するかどうかは気にしません。それは間違っています。 – hrbrmstr

+0

@hrbrmstrそれはそれの後ろに推論を与えないためのかなり根本的な声明です。言い換えれば、彼らは分析のためにデータをダウンロードしてプレーンテキストのダンプを提供することに門戸を開いており、エンジニアはIMDBのボットを持つ人々を助けてきました。彼らは掻き分けを気にしないと言いますが、それをうまくやっていない壊れたボットは頭痛を引き起こします。 –

10

NULLのヘッダーの文字列にNULLが含まれているため、forbidding youにアクセスできません。 add_headersができますGET要求に包まれ

library(httr) 
library(rvest) 

url <- "https://www.opm.gov/policy-data-oversight/data-analysis-documentation/federal-employment-reports/historical-tables/total-government-employment-since-1962/" 

x <- GET(url, add_headers('user-agent' = 'Gov employment data scraper ([[your email]])')) 

:(。一部のブラウザでは、ユーザーが他のブラウザを偽装しましょうけれども、通常、それはあなたが使用しているもののブラウザ伝える文字列だ、)httrパッケージを使用して、user-agent文字列を設定することができます好きなパラメータを設定します。 add_headersの代わりに、より具体的なuser_agent関数を使用して設定することもできます。

この場合、いずれもuser-agent文字列は機能しますが、あなたが誰であり、何を望んでいるかを丁寧(最後のリンクを参照)してください。

rvestを使用すると、HTMLを解析して表を引き出すことができます。関連するテーブルを選択する方法が必要です。 HTMLを見て、それにはclass = "DataTable"がありますが、SelectorGadget(rvestビネットを参照)を使用して、有効なCSSまたはXPathセレクターを見つけることもできます。したがって

x %>% 
    read_html() %>% 
    html_node('.DataTable') %>% 
    html_table() 

は、(完全ではないにしても)きれいなdata.frameを提供します。

注:責任を持って法的に擦り傷をつけてください。 OPMが政府の情報源であることを考えると、それはパブリック・ドメインにありますが、それは多くのウェブでは当てはまりません。 this nice post on how to scrape responsibly.

関連する問題