私はBeautifulSoupでウェブサイトを掻き集めることを学んでいて、うまくいっています。コードを借用して、私は特定のウェブサイトを掻き集めることができました。しかし、私が下のウェブサイトにアクセスしたとき、私はテーブルの一番上の列を返すだけです。私はhtmlでウェブサイトコーダーがヘッダー行にthタグの代わりにtdタグを作ったことに気付きました。それが私の問題を引き起こしているのではないかと思っていました。もしそうなら、回避策はありますか?私は明白な何かを欠いていますか私は別のパーサーを使ってみました。Python BeautifulSoup一番上に戻る
url = 'https://www.twinspires.com/php/brisstats/report.php?bris_id=4061015&report=activity'
soup = BeautifulSoup(urllib2.urlopen(url).read(), 'html5lib')
data = []
table = soup.find('table', attrs={'id':'reporttable'})
rows = table.findAll('tr')
for row in rows:
print row
cols = table.find_all('td')
cols = [ele.text.strip() for ele in cols]
data.append([ele for ele in cols if ele]) # Get rid of empty values
print data
アイドル状態の印刷行の出力とデータ文
<tr>
<td class="field-title" width="15%">Activity</td>
<td class="field-title" width="10%">Date</td>
<td class="field-title" width="10%">Track</td>
<td class="field-title" width="9%">Distance</td>
<td class="field-title" width="5%">Surf</td>
<td class="field-title" width="5%">Cond</td>
<td class="field-title" width="9%">Time</td>
<td class="field-title" width="10%">Class</td>
<td class="field-title" width="5%">Fin</td>
<td class="field-title">Comment</td>
</tr>
[[u'Activity', u'Date', u'Track', u'Distance', u'Surf', u'Cond', u'Time', u'Class', u'Fin', u'Comment']]
あなたはテーブルの* contents *を掻き取ろうとしていると思いますか?残念ながら、(誤ってタグ付けされた)ヘッダー行を除いて、テーブル自体はJavaScriptによって生成されるため、最終的なHTMLをレンダリングする前に 'selenium'や' phantomjs'のようなものを使う必要があります。ブラウザの開発者ツールを使用してレンダリングされたHTMLを表示できます。 – MattDMo