在Python中使用XPath提取属性值

3

我有以下HTML代码:

<table>
<tbody>
<tr>
<td align="left" valign="top" style="padding: 0 10px 0 60px;">
<img src="/files/39.jpg" width="64" height="64">
</td>
<td align="left" valign="middle"><h1>30 Rock</h1></td>
</tr>
</tbody>
</table>

使用Python和LXML,我需要从元素的属性src中提取值。这是我尝试过的代码:
import lxml.html
import urllib

# make HTTP request to site
page = urllib.urlopen("http://my.url.com")
# read the downloaded page
doc = lxml.html.document_fromstring(page.read())

txt1 = doc.xpath('/html/body/table[2]/tbody/tr/td[1]/img')

当我输出txt1时,我只得到空列表[]。我该如何纠正这个问题?

使用 img/@src。至于为什么您得到了空列表,这是可以预料的,如果这是您要解析的实际HTML代码,因为它不符合XPath。 - Fred Foo
谢谢建议。这只是从HTML文档中剪切出来的一部分。 - Eugene Shmorgun
1个回答

4

请使用此XPath:

//img/@src

选择输入 XML 文档中所有 img 元素的 src 属性。

描述不正确://img/@src将选择整个输入XML文档中所有img元素的src属性。如果您想将选择限制为上下文节点的后代,则需要使用.//img/@src - michael.hor257k

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接