2017-03-12 1 views
0

を見つけることができない私は、このウェブサイトのデータを解析しようとしています: http://www.baseball-reference.com/boxes/CHN/CHN201606020.shtmlがテーブル

私は、テーブル内のデータの一部を抽出したいです。しかし何らかの理由で、私はそれらを見つけるのに苦労しています。たとえば、私がしたいことはこれです

from bs4 import BeautifulSoup 
import requests 

url = 'http://www.baseball-reference.com/boxes/CHN/CHN201606020.shtml' 
soup = BeautifulSoup(requests.get(url).text) 
soup.find('table', id='ChicagoCubsbatting') 

最後の行は、そのIDがhtmlに存在するテーブルがあるにもかかわらず何も返しません。さらに、len(soup.findAll('table'))は、ページに多数のテーブルがあっても1を返します。私は 'lxml'、 'html.parser'、 'html5lib'を使ってみました。すべて同じように動作します。

何が起こっていますか?なぜこれはうまくいかず、テーブルを抽出するために何ができるのですか?

+1

この表はコメントの内部にあるため、実際にはドキュメントの一部ではありません。 – jordanm

+0

それはどのようにWebページに表示されますか?それでも、どうすればそれを抽出できますか? – dillon

答えて

0

soup.find('div', class_='placeholder').next_sibling.next_siblingを使用してコメントテキストを取得し、これらのテキストを使用して新しいsoupを作成します。

In [35]: new_soup = BeautifulSoup(text, 'lxml') 

In [36]: new_soup.table 
Out[36]: 
<table class="teams poptip" data-tip="San Francisco Giants at Atlanta Braves"> 
<tbody> 
<tr class="winner"> 
<td><a href="/teams/SFG/2016.shtml">SFG</a></td> 
<td class="right">6</td> 
<td class="right gamelink"> 
<a href="/boxes/ATL/ATL201606020.shtml">Final</a> 
</td> 
</tr> 
<tr class="loser"> 
<td><a href="/teams/ATL/2016.shtml">ATL</a></td> 
<td class="right">0</td> 
<td class="right"> 
</td> 
</tr> 
</tbody> 
</table 
+0

これはうまくいきますが、コメントアウトされた表がブラウザで表示される方法や理由は誰でも説明できますが、BeautifulSoupでは表示されません。 – dillon

+0

@dillon JavaScript –