0

Python 2.7 lxmlを使用していますが、テーブルの検索に問題があります。

id od classで検索すると、nullの結果が生成されます。

 a = [c.text for c in kontent.xpath('//table[@id="blk-ctnt-2308"[1]//tr/td[5]]

他に何か提案はありますか?

ありがとうございました

4

1 に答える 1

0

XPath式のインデックスの前に角かっこがありません[1]

a = [c.text for c in kontent.xpath('//table[@id="blk-ctnt-2308"][1]//tr/td[5]') ]

また、//table[@id="blk-ctnt-2308"][1]完全な式を試す前に、式の最初の部分が機能するかどうかを確認することをお勧めします。

最後に、ソーステーブルにid属性がある場合、インデックス[1]は冗長ですが、それでも機能するはずです。

アップデート

このマシンでは使用できないためlxml、XPathをテストするためにElementTree XMLAPIを使用しています。このコードは次のとおりです。

import xml.etree.ElementTree

html = '''<html>
<head><title></title></head>
<body>
<table id="blk-ctnt-2308">
<tr><td>1a</td><td>2a</td><td>3a</td><td>4a</td><td>5a</td><td>6a</td></tr>
<tr><td>1b</td><td>2b</td><td>3b</td><td>4b</td><td>5b</td><td>6b</td></tr>
<tr><td>1c</td><td>2c</td><td>3c</td><td>4c</td><td>5c</td><td>6c</td></tr>
</table>
<table id="blk-ctnt-2309">
<tr><td>1a</td><td>2a</td><td>3a</td><td>4a</td><td>5a</td><td>6a</td></tr>
<tr><td>1b</td><td>2b</td><td>3b</td><td>4b</td><td>5b</td><td>6b</td></tr>
<tr><td>1c</td><td>2c</td><td>3c</td><td>4c</td><td>5c</td><td>6c</td></tr>
</table>
</body>
</html>'''

tree = xml.etree.ElementTree.fromstring(html)
results = [ c.text
            for c in tree.findall('body/table[@id="blk-ctnt-2308"]//tr/td[5]') ]
print results

この出力を生成します:

['5a', '5b', '5c']
于 2012-06-11T08:51:24.803 に答える