2017-05-12 5 views
0

トプラインデータポイント(総GHG、1人当たりGHG、BTUあたりのGHG)を削り取り、次のページからRとphantom.js:Rとphantom.js:メインコンテンツブロックをスクラップできません

http://apps1.eere.energy.gov/sled/#/results/home?city=Omaha&abv=NE

これは私のコードです:CLASSは私はまだ確認されていませんクラスです

url <- "http://apps1.eere.energy.gov/sled/#/results/home?city=Omaha&abv=NE" 

writeLines(sprintf("var page = require('webpage').create(); 
page.open('%s', function() { 
    console.log(page.content); //page source 
    phantom.exit(); 
});", url), con="scrape.js") 

system("phantomjs scrape.js > eere.html") 

pg <- read_html("eere.html") 
pg %>% html_nodes("CLASS") %>% html_text() 

Here's the html I'm getting for eere.html.ヘッダーとフッターの内容のみが含まれており、ページの本文を取得できません。

任意のアドバイスはありますか? RSelenium経由PhantomJSで

+0

Rから直接PhantomJSを[RSelenium](https://ropensci.github.io/RSelenium/)経由で使用することができます。あるいは、そのサイトは、そのデータを再作成するための良いデータダウンロードオプションと方法論を持っています。 – alistaire

+0

ありがとう!私はAPIを認識していますが、私はなぜ学習目的のためにスクレイプでメインコンテンツをうまく引き出していないのかを知りたいと思っています。私はRSeleniumを見ていきます。 – heyjay

答えて

1

、それは

library(RSelenium) 
library(rvest) 

# start remote driver and browser 
remdr <- rsDriver(browser = 'phantomjs', verbose = FALSE) 

remdr$client$navigate('http://apps1.eere.energy.gov/sled/#/results/home?city=Omaha&abv=NE') 
Sys.sleep(2) # wait 2 secs for page to load if you're not running line by line 
page <- remdr$client$getPageSource() 

# parse HTML with rvest 
page[[1]] %>% read_html() %>% html_nodes('h5') %>% html_text() 
#> [1] "Total GHG: metric tons"    
#> [2] "GHG per capita: metric tons/person" 
#> [3] "GHG per BTU: metric tons/MMBTU" 

# clean up 
remdr$client$close() 
remdr$server$stop() 
#> [1] TRUE 

ようになりRSeleniumはRでは珍しいが、実行可能だOOPスタイルを使用しています。その結果、ドキュメントは同様に珍しい方法で整理されますが、実際に掘り下げれば徹底的になります。

最後に、必要がない場合は、RSeleniumを避けることをお勧めします。これはRツールボックスで重要かつ必要なツールですが、Rツールボックスの機能のために、Rの残りの部分と比較して本質的に重く、遅いです。サイトでは良いデータダウンロードオプションが提供され、問題のデータを再作成する方法を考えると、 。いくつかのページでは実用的かもしれませんが、データを再構築するほうが速い点があります。

関連する問題