Python lxml XPath问题

标签 python xpath lxml

我正在尝试从网页中打印/保存某个元素的 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 显然有点太长了,你为什么不试试更短的,看看它们是否匹配。一个问题可能是浏览器在 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(...) 放在一起。

关于Python lxml XPath问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5333236/

相关文章:

python - 如何/在哪里将(python)脚本上传到 jenkins 来运行?

java - 使用 XPath 将元素保留在文本中

c# - 下拉菜单选择在 Phantomjs 上使用 C# selenium 不起作用

python - 从(相对)父文件夹导入 BeautifulSoup,并在其旁边导入一个 html 解析器

python - 我想获取所有图像,但 selenium python 只获取三个图像

python - 生成 QCloseEvent 不会关闭 QMainWindow

Python:LXML - 如何将元素添加到现有元素树

python - lxml 树头和其他一些元素损坏

python - 获取字符串中的所有表情符号

c# - 如何使用C#获取XML中特定属性的值?