如何将XPath元素转换为纯HTML文本?

时间:2014-09-05 11:01:15

标签: python html xpath lxml

我有页面:

<body>
  <div>
    <a id="123">text_url</a>
  </div>    
<body>

我希望得到元素&#39; // div / a&#39;作为简单的HTML文本。

<a id="123">text_url</a>

我该怎么做?

4 个答案:

答案 0 :(得分:1)

如果您已使用lxml解析了该对象,则可以使用lxml.etree.tostring()对其进行序列化:

from lxml import etree
xml='''<body>
  <div>
    <a id="123">text_url</a>
  </div>    
</body>'''

root = etree.fromstring(xml)
for a in root.xpath('//div/a'):
  print etree.tostring(a, method='html', with_tail=False)

答案 1 :(得分:0)

使用抓取模块在python中使用解决方案。

from grab import Grab

g = Grab()
g.go('file://page.htm')
print g.doc.select('//div/a')[0].html()

>><a id="123">text_url</a>

答案 2 :(得分:0)

你可以使用re.findall使用python的re模块。

import re
print re.findall(r".*?(<a.*?<\/a>).*",x,re.DOTALL)

其中x是     X =&#34;&#34;&#34;                           text_url                              &#34;&#34;&#34;

Output:['<a id="123">text_url</a>']

也参见演示。

http://regex101.com/r/lF4lY6/1

答案 3 :(得分:0)

您可以在Python中使用xml库。

from xml.etree.ElementTree import parse

doc = parse('page.xml') # assuming page.xml is on disk
print doc.find('div/a[@id="123"]').text

请注意,这仅适用于严格的XML。 例如,关闭body标记不正确,在这种情况下此代码将失败。 Web上的HTML很少是严格的XML。