[英]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.