<body>
<div>
<a id="123">text_url</a>
</div>
<body>
我想元素 '// DIV /一个' 纯HTML文本。
<a id="123">text_url</a>
我该怎么办?
<body>
<div>
<a id="123">text_url</a>
</div>
<body>
我想元素 '// DIV /一个' 纯HTML文本。
<a id="123">text_url</a>
我该怎么办?
如果您已经使用解析的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)
在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>
你可以用re.findall来使用python的re模块。
import re
print re.findall(r".*?(<a.*?<\/a>).*",x,re.DOTALL)
其中x是 X = “” “ text_url ”“”
Output:['<a id="123">text_url</a>']
见演示为好。
正则表达式不适合需要从复杂页面上的某些标记中提取html的任务 – 2014-09-05 12:27:07
你可以在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。
从XPath的角度来看,'// DIV/A'已指向''text_url。其余依赖于XPath主机。什么是您正在使用的XPath引擎?编程语言和Xpath库可能? – har07 2014-09-05 11:31:09
python语言,libs - lxml,抓取。据我所知,XPath标准不支持这种常用方法? – 2014-09-05 11:36:43
我不知道python,也许别人可以带你。通常,XPath库提供了获取节点标记的方法。例如,在.NET中,我可以这样做:'var node = xml.SelectSingleNode(“// div/a”); var nodesMarkup = node.OuterHtml;' – har07 2014-09-05 11:41:54