[英]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.