1

HTMLドキュメントを解析しようとしています。いくつかのテーブルが含まれています。正しいテーブルを見つけて、それからデータを取得することができます

for cell in doc.xpath('//table[@class="CE_13"]')[0]:
    for a in cell:
        print a.text_content()

テーブルは6列で構成されています。5列目だけが必要です。dictのすべての値を取得することは可能ですか(smth like:{ column1 : values_of_clm1 ;column2 : values_of_clmn2; .....})and how?そしてform dictを読むか、別の解決策を提案しますか?

4

3 に答える 3

6

この投稿は、あなたがやろうとしていることに役立つかもしれません: python, lxml and xpath - html table parsing .

次に、辞書を読むために、さまざまな戦略を選択できます。キーが何であるかを正確に知っている場合は、キーを介して値に直接アクセスできます。my_dict['a_key_string']

それ以外の場合は、次のように辞書を反復処理できます。

for key,val in my_dict.items():
   do_stuff(key,val)

編集

5 番目のtd要素をすべて取得します。

tds = root.xpath("//table//td[position()=5]")

td要素を反復処理します。

for td in tds:
    print "tag %s" % td.tag
    print "inner %s" % td.text

5番目のテーブル列を構成するtd要素のみを直接取得できるため、基本的にここでは辞書は必要ありません

于 2012-06-06T12:26:05.430 に答える
0

次のコードを使用して問題を解決しました。

en_array = []
for cell in doc.xpath('//table[@class="CE_13"]')[0]:
    for a in cell:
        en_array.append(a.text_content())

print en_array
#Print the 6th column of table
for a,element in enumerate(en_array):
    if a % 9 == 5:
        print en_array[a]

誰かがより良い解決策を持っている場合は、私に知らせてください。ありがとうございました

于 2012-06-06T12:50:11.967 に答える
0

セルの内容のリストが必要な場合は、次を使用できます。

[c.text for c in doc.xpath('//table[@class="CE_13"][1]//tr/td[5]')]

本当に任意の辞書キーが必要で、Python2.7 を使用している場合:

l = doc.xpath('//table[@class="CE_13"][1]//tr/td[5]')
{'column%d' % (i+1): l[i].text for i in range(0,len(l))}
于 2012-06-06T14:38:09.963 に答える