繁体   English   中英

Python lxml XPath问题

[英]Python lxml XPath problem

我正在尝试从网页打印/保存某个元素的HTML。
我从firebug中检索了所请求的元素的XPath。

我希望将此元素保存到文件中。 我似乎没有成功。
(尝试使用和不使用/text()的XPath)

我将不胜感激任何帮助或过去的经验。
10x,大卫

import urllib2,StringIO
from lxml import etree

url='http://www.tutiempo.net/en/Climate/Londres_Heathrow_Airport/12-2009/37720.htm'
seite = urllib2.urlopen(url)
html = seite.read()
seite.close()
parser = etree.HTMLParser()
tree = etree.parse(StringIO.StringIO(html), parser)
xpath = "/html/body/table/tbody/tr/td[2]/div/table/tbody/tr[6]/td/table/tbody/tr/td[3]/table/tbody/tr[3]/td/table/tbody/tr/td/table/tbody/tr/td/table/tbody/text()"
elem = tree.xpath(xpath)


print elem[0].strip().encode("utf-8")

你的XPath显然有点太长了,你为什么不尝试更短的XPath,看看它们是否匹配。 一个问题可能是由浏览器在DOM中自动创建的“tbody”,但HTML标记通常不包含它。

以下是如何使用XPath结果的示例:

>>> from lxml import etree
>>> from StringIO import StringIO
>>> doc = etree.parse(StringIO("<html><body>a<something/>b</body></root>"), etree.HTMLParser())
>>> doc.xpath("/html/body/text()")
['a', 'b']

因此,如果需要,您可以只将"".join(...)所有文本部分组合在一起。

不确定我是否完全遵循您要完成的任务,但最终我认为您正在寻找:

print etree.tostring(elem[0])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM