Python で html テーブルから特定の列のすべての要素を取得する方法はありますか:
たとえば:
a b c
1 2 3
a
,1, c
, 3を取得したいです。
ありがとうございました
Python で html テーブルから特定の列のすべての要素を取得する方法はありますか:
たとえば:
a b c
1 2 3
a
,1, c
, 3を取得したいです。
ありがとうございました
スパンがない場合は、非常に簡単に実行できます。次のようなテーブルを想像してください。
<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')]
これは、実際のスクレイピング プログラムでは使用しないことに注意してください。これは、それを行う方法の簡単な例です。現実の世界では、この方法では解析できない不適切なコードがよくあります。スクリーン スクレイピングを行う場合は、パーサーを使用してテーブルの内容を取得しますが、この方法で圧縮して列を取得します。
何を試しましたか?他の HTML コードを解析していますか? それとも、やりたいことはこれだけですか?
Beautiful Soup for HTML scraping を見てみてください。
あなたがやろうとしたこと、またはあなたのプロジェクトについて、より多くの情報を含めてください。