2017-10-20 10 views
0

だから、いくつかのNBAデータをスクラップしたいと思っています。以下は、私がこれまで持っているものであり、それは完全に機能している:rvestを使用してhtmlテーブルにアクセスする

install.packages('rvest') 
library(rvest) 

url = "https://www.basketball-reference.com/boxscores/201710180BOS.html" 
webpage = read_html(url) 
table = html_nodes(webpage, 'table') 
data = html_table(table) 

away = data[[1]] 
home = data[[3]] 

colnames(away) = away[1,] #set appropriate column names 
colnames(home) = home[1,] 

away = away[away$MP != "MP",] #remove rows that are just column names 
home = home[home$MP != "MP",] 

問題は、これらのテーブルが重要なチーム名を、含まれていないということです。この情報を得るには、ウェブページ上の4つの要素の表を掻き集めると思っていましたが、これは表として認識されていないようです。

<div class="overthrow table_container" id="div_four_factors"> 

、表は以下のとおりです:4つの要因のテーブルが含まれているdivがある

<table class="suppress_all sortable stats_table now_sortable" id="four_factors" data-cols-to-freeze="1"><thead><tr class="over_header thead"> 

これは私が私が

table = html_nodes(webpage,'#div_four_factors') 
の線に沿って何かを経由してテーブルにアクセスすることができることを考えさせられました

しかし、これは私が空リストを取得しているので動作しないようです。どのようにして4つの要因表にアクセスできますか?

答えて

0

私は決してHTMLエキスパートではありませんが、興味のあるテーブルがソースコードでコメントアウトされていて、レンダリングされる前にコメントがオーバーライドされているようです。我々はホームチームが常に2番目に記載されていることを前提とした場合

、私たちはただ位置引数を使用して、ページ上の別のテーブルをこすりすることができます

table = html_nodes(webpage,'#bottom_nav_container') 
teams <- html_text(table[1]) %>% 
    stringr::str_split("Schedule\n") 

away$team <- trimws(teams[[1]][1]) 
home$team <- trimws(teams[[1]][2]) 
明らか

ないクリーンなソリューションが、そのようなはの世界での生活ですウェブスクレイピング

関連する問題