我正在尝试从网页中打印/保存特定元素的HTML。 我已经从萤火虫中检索了所请求元素的XPath。
我只希望将该元素保存到文件中。我似乎没有成功。 (尝试在XPath/text()的结尾加上和不结尾)
/text()
我将不胜感激,或者有以往的经验。 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看看它们是否匹配。一个问题可能是“ tbody”,浏览器会在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(...),如果需要,您可以将所有文本部分放在一起。
"".join(...)