HTMLテーブルからデータをスクレイピングするためのbeautifulsoup/pythonコードを書いています。テーブルの問題は、特定の列に空白のデータがある (セルが空である) ことです。このコードを実行すると、最初にテーブル内の空白セルに遭遇すると、「型エラー」で停止し、そのコード行までしか出力されません。
以下の CODE は、空のセルが最初に発生したときに型エラーで停止します。
for tr in rows:
cols = tr.findAll('td')
for td in cols:
text = ''.join(td.find(text=True))
print
上記のコードの出力例 -
A, 123, c, d, 6, 0, KK, G,
V, 21, b, e, 6, 5, kk, g,
M, 1, a, f, 7, 5, BB,
上記の出力の最後の行では、最後の値 (BB) の後にデータがないことに注意してください。これは、テーブルに空白のセルがあり、その結果、これだけ出力した後に python が実行を停止するためです。
修正してみましたが、すでにデータが入っている特定のセルに空白が入り続けます。
更新されたコード:
for tr in rows:
cols = tr.findAll('td')
for td in cols:
if td.find(text=''):
text = ''.join('blank')
else:
text = ''.join(td.find(text=True))
print text + ", ",
print
上記コードの出力例 -
blank, 123, c, d, 6, 0, blank, blank,
blank, 21, b, e, 6, 5, blank, blank,
blank, 1, a, f, 7, 5, blank,
注-上記でも、3番目のセルで実際の空白データに遭遇した後に停止します。
私は何を間違っていますか?基本的に、セルにデータがない場合はセルの出力を空白にしたいのですが、それ以外の場合は、実際のセルの内容を出力する必要があります。