2016-05-31 5 views
0

にnull値をキャプチャし、私はテーブルの情報を取得するためにbeautifulsoupを使用しましたこの表には2つのヘッダーがあります: "コードと表示"といくつかの値が行にあります。私のコードの予想される出力は、[コード、ディスプレイ、分、分、幸せ、時間、毎日、一日]美しいスープは、テーブルのHTMLコードの以下の部分については

する必要がありますが、これは出力されます。

['Code', 'Display', 'min', 'Minute', '', 'happy ', 
'Hour', '', 'daily ', 'Day', ''] 

出力は、第5回では「」ありこの表に定義されていないコメントの8番目と8番目と11番目のインデックス。私はそれが</td><td/>のためかもしれないと思う。 出力をキャプチャしないようにコードを変更するにはどうすればよいですか?

+0

@ノア、私の問題は 'u'ではありません。それは出力リストの中にあります。私はコードを次のコードを使用して文字列に変換した後、 'Comments'の[Data.encode( 'utf-8')のコメントのデータ] 'の出力です:[' Code '、' Display '、' min ' 、 'Minute'、 ''、 'happy'、 'Hour'、 ''、 'daily'、 'Day'、 '']、5番目と10番目のインデックスで余分な出力が見えますか? – Mary

答えて

1

申し訳ありませんが、私はあなたの質問を十分に熟読していませんでした。あなたは正しい、問題は空の<td/>タグです。ただ、テキストのみで細胞を含めるように発電機を調整します

comments = [td.get_text() for td in table.findAll('td') if td.text] 


EDIT:私は、これはそれを行うための最も効率的な方法である疑いが、これはテキストのみまたは対応するTDのいずれかを持っているTDSが含まれます最初の行に

ths = table.tr.find_all('td') 
tds_in_row = len(table.tr.next_sibling.find_all('td')) 

tds = [ 
    td.get_text() 
    for i, td in enumerate(table.find_all('td')) 
    if len(ths) > (i + 1) % tds_in_row or td.text 
] 
+0

ありがとうございました! – Mary

+0

申し訳ありませんノア、別の解決策を教えていただけますか?提供したコードを使用すると、実際にキャプチャしたいヌル値の一部(他のテーブルに表示するなど)がキャプチャされないためです。あなたはテーブルのタグからを取り除くことができると思いますか? – Mary

+0

あなたはいつ値を保持したいと思わないかの例を挙げることができますか? – Noah

関連する問題