2017-09-02 8 views
0

Rのselectorgadgetを使用して特定のウェブサイトからデータをウェブスクラップしようとしました。たとえば、前にhttp://www.dotabuff.com/heroes/abaddon/matchupsからwebscrapedしました。通常、selectorgadget Chrome拡張機能を使用してテーブルをクリックし、CSS Selection結果を次のようにコードに挿入します。この場合R(rvest)でselectorgadgetを使用して.dpboxテーブルをwebscrapeするにはどうすればよいですか?

urlx <- "http://www.dotabuff.com/heroes/abaddon/matchups" 
rawData <- html_text(html_nodes(read_html(urlx),"td:nth-child(4) , td:nth-child(3), .cell-xlarge")) 

、html_nodes機能は、私はこのコードであることが判明selectorgadgetを用いhttp://www.dotapicker.com/heroes/Abaddonをオフwebscrapeしようとすると、しかし、ノード(340)

{xml_nodeset (340)} 

の全体の束を返すし:

urlx <- "http://www.dotapicker.com/heroes/abaddon" 
rawData <- html_text(html_nodes(read_html(urlx),".ng-scope:nth-child(1) .ng-scope .ng-binding")) 

は残念ながら、ノードが実際に関数が呼び出されたhtml_nodes後に現れていない、と私は結果を得る

私はこれがドロップダウンボックスでテーブルを入れ子にすることと関係があるように感じています(前のテーブルと比べて、テーブルはウェブページ自体の上にありました)が、私はそれを回避する方法がわかりません。

ありがとう、何か助けていただきありがとうございます!

答えて

0

このページのように、XHRを使用して一部のデータを動的に読み込むようです。 Chromeでは、検査してから[ネットワーク]タブをクリックすることで確認できます。これを行うと、多数のjsonファイルがロードされていることがわかります。それらのjsonファイルを直接スクラップし、解析して必要な情報を抽出することができます。簡単な例を示します。

library(httr) 
library(jsonlite) 

heroinfo_json <- GET("http://www.dotapicker.com/assets/json/data/heroinfo.json") 
heroinfo_flat <- fromJSON(content(heroinfo_json, type = "text")) 
#> No encoding supplied: defaulting to UTF-8. 

winrates_json <- GET("http://www.dotapicker.com/assets/dynamic/winrates10d.json") 
winrates_flat <- fromJSON(content(winrates_json, type = "text")) 
#> No encoding supplied: defaulting to UTF-8. 
関連する問題