0

テーブルを解析しようとしていますが、項目番号 5 以外は問題ありません。アイテムにはもっと精巧なパラメーターがあるようです。

なぜこれが起こっているのか少し混乱しています

私が持っているコードは次のとおりです。

for row in tables.findAll('tr'):
    col = row.findAll('td')
    record =[]
    for i in range(0,9):
        cell = col[i].string.strip()

「スープ」で:

<td align="left" class="table-top">Item1</td>
<td align="left" class="table-top">Item2</td>
<td align="left" class="table-top">Item3</td>
<td align="center" class="table-top">Item4</td>
<td align="right" class="table-top">Item5 <img align="top" alt="" border="0" height="12" src="gfx/chart_hover_icon.gif" width="15"/></td>

最初の 4 つは解析されますが、5 はエラーになります。

cell = col[i].string.strip()
AttributeError: 'NoneType' object has no attribute 'strip'
4

1 に答える 1

1

ドキュメントから:

タグに複数のものが含まれている場合、.string が何を参照すべきかが明確ではないため、.string は None として定義されます。

5 番目のtd要素には複数のもの (一部のテキストとimg) が含まれているため、string属性は None です。

stringsまたはジェネレーターを使用しstripped_stringsてこのコンテンツを取得できます。この場合、戻り値は 1 つしかありませんが、 の後にテキストがある場合をどのように処理するかを検討する価値がありますimg

タグ内に複数のものがある場合でも、文字列だけを見ることができます。.strings ジェネレーターを使用する

これらの文字列には多くの余分な空白が含まれる傾向があり、代わりに .stripped_strings ジェネレーターを使用して削除できます

または、get_text純粋なテキスト コンテンツを引き出し、テキストの削除と結合を制御するためのいくつかのオプションを提供します。

于 2013-08-13T20:07:09.590 に答える