<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