2016-08-31 8 views
2

私はこのJavaScriptのコマンドを実行してみてください:クエリセレクタすべてrvestパッケージで

library(rvest) 

url <- read_html("") 

url %>% 
    html_nodes("div.Dashboard-section div.pure-u-1-1 span.ng-scope") %>% 
    html_text() 

が、私は結果として、この取る::次のコードを使用してrvestパッケージを使用してRで

document.querySelectorAll('div.Dashboard-section div.pure-u-1-1 span.ng-scope')[0].innerText 

character(0) 

と私はこれを期待していました:

"Displaying results 1-25 of 10,897" 

私は何ができますか?

+0

これは動的なウェブページです。あなたはデータが読み込まれる前にhtmlを読んでいます。この回答を確認してください - http://stackoverflow.com/a/29965233/3927604 – neoFox

+0

あなたは以下のことを許可されていない彼らの(むしろダムではないにしても)ToSに違反しています:_ "ロボットやインテリジェントエージェントを使って、IEEE Xploreの任意の部分を検索したり体系的にダウンロードしたりすることができます。 "_ – hrbrmstr

答えて

1

一言で言えば、rvestパッケージはHTMLをフェッチできますが、Javascriptを実行することはできません。あなたがAJAX、javascript経由でデータを読み込もうとしたページ。

ユーザーneoFoxが提案するように、回避策としてRSeleniumパッケージを使用できます。 Selenium WebdriverはFirefoxまたはChromeを起動し、ページに移動し、読み込まれるまで待ちます。 HTML DOMからデータフラグメントを取得します。

また、ブラウザのGUIをポップアップさせることなく、HTMLページをHTMLファイルにダウンロードする非常に小さなphantomjsヘッドレスブラウザを使用してください。 Read in and parse RでダウンロードしたHTMLファイル

どちらも深刻な設定が必要です。 SeleniumはJavaベースです。 Phantomjsは、少なくともそのマニュアルを読む必要があります。

また、ページを調べて、サイトが作成しているPOSTリクエストを見つけて、このPOSTを自分で送信することもできます。次に、JSONを取得して戻って、結果項目を自分で数えます。

+0

あなたは' franomium'で 'phantomjs'を駆動することができます。 – hrbrmstr

関連する問題