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]]
他に何か提案はありますか?
ありがとうございました
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']