0

Python で html テーブルから特定の列のすべての要素を取得する方法はありますか:
たとえば:

a    b    c  
1    2    3  

a,1, c, 3を取得したいです。

ありがとうございました

4

2 に答える 2

0

スパンがない場合は、非常に簡単に実行できます。次のようなテーブルを想像してください。

<table>
     <tr><td>A</td><td>B</td><td>C</td></tr>
     <tr><td>1</td><td>2</td><td>3</td></tr>
</table>

次のようにレンダリングされます。

A B C
1 2 3

テーブル コードでいくつかの文字列操作を実行すると、列を抽出できる 2 次元データ構造を簡単に設定できます。私が考えることができる最も簡単な方法は、正規表現を使用することです。以下は、テーブル コード (簡単にするためにタグなし) を受け取り、行のリストを返す小さな関数です。行はセルのリストとして返されます。

import re
    def htmlTableData(tblbody):
    trs=re.findall(r'(?<=<tr>).*?(?=</tr>)', tblbody)
    content=[re.findall(r'(?<=<td>).*?(?=</td>)', tr) for tr in trs]
return content

上記のテーブルの例では、次のリストが返されます。

[['A', 'B', 'C'], ['1', '2', '3']]

次に、解凍​​してzip関数に渡します(els上記のリストです):

columns=zip(*els)

そして、列がタプルである列のリストを返します。上記の例では、[('A', '1'), ('B', '2'), ('C', '3')]

これは、実際のスクレイピング プログラムでは使用しないことに注意してください。これは、それを行う方法の簡単な例です。現実の世界では、この方法では解析できない不適切なコードがよくあります。スクリーン スクレイピングを行う場合は、パーサーを使用してテーブルの内容を取得しますが、この方法で圧縮して列を取得します。

于 2012-12-05T15:08:16.623 に答える
0

何を試しましたか?他の HTML コードを解析していますか? それとも、やりたいことはこれだけですか?

Beautiful Soup for HTML scraping を見てみてください。

あなたがやろうとしたこと、またはあなたのプロジェクトについて、より多くの情報を含めてください。

于 2012-12-05T05:18:59.763 に答える