pythonでスクレイピングがうまく出来ません
python2.7でbeautifulsoupを用いて、netkeiba.comから競馬情報(騎手の成績)をスクレイピングしています。
定法に基づきまして、『検証』からページのツリー構造を把握して、プログラムを作成しました。
馬名部分の構造が<td class="txt_l">
<a href="/horse/2011105901">テンテマリ</a></td> #テンテマリは馬名
となっておりましたので、"txt_l"を拾い出せるようにスクリプトを作りました。
しかしながら、
馬名以外の"txt_l"は全部スクレイピング出来るのですが、馬名部分だけがNoneと返ってまいります。
エラーメッセージではありませんが、何が原因でNoneとなるのかが、どうしても分かりません。
ちなみに、馬名以外で、ほぼ同様の構造を持つ、『レース名』、構造は
<td class="bml txt_l">
<a href="/race/201603020812/" title="3歳上500万円下">3歳上500万円下</a>
(3歳上500万円下はレース名) では、問題なくレース名を拾うことが出来ました。
該当のソースコード
-*- coding:utf-8 -*-
import urllib2
import codecs
from bs4 import BeautifulSoup
tpl_url='http://db.netkeiba.com/?pid=jockey_detail&id=00663&page={0}'
for i in xrange( 1, 2 ):
url=tpl_url.format( i )
soup = BeautifulSoup(urllib2.urlopen(url).read(),"lxml")
tr_arr = soup.find('div', {'id':'contents_liquid'}).findAll('tbody')
for tr in tr_arr:
lrg1 = tr.findAll('td',{'class':'txt_l'})
for tr1 in lrg1:
print tr1.string
試したこと
馬名以外の('td',{'class':'txt_l'})に準ずる『レース名』は、うまく拾うことが出来ました。
lrg1 = tr.findAll('td',{'class':'txt_l'}) で馬名を得ることが出来ない理由、併せて馬名を拾えるスクリプトを御教示くださいますよう、よろしくお願いいたします!