簡體   English   中英

如何使用lxml獲取損壞的html的文本

[英]How to get text of broken html with lxml

這是我所擁有的:

r = requests.get("http://www.cnn.com/")
htmlelement = lxml.html.fromstring(r.text)
html = lxml.html.tostring(htmlelement)
tree = lxml.etree.fromstring(html)
print tree.xpath('//*[@id="cnn_maintt1imgbul"]/div/div[2]/div/h1/a')

我以為xml.html更正了損壞的html?

錯誤是:

XMLSyntaxError:開頭和結尾標簽不匹配:鏈接第32行和頭部,第75行,第8列

謝謝!

我不明白為什么您要在達到這一目標后重新解析內容:

>>> htmlelement = lxml.html.fromstring(r.text)

因為此時您可以簡單地應用xpath表達式:

>>> results = htmlelement.xpath('//*[@id="cnn_maintt1imgbul"]/div/div[2]/div/h1/a')
>>> results
[<Element a at 0x1113a1f50>]
>>> print lxml.html.tostring(results[0])
'<a href="/2014/04/26/world/asia/south-korea-ship-sinking/index.html?hpt=hp_t1" target="">SOUTH KOREAN PRIME MINISTER RESIGNS</a>'

我相信您的問題是lxml.html.tostring()仍然生成HTML,然后您嘗試使用XML解析器進行解析。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM