我有外部HTML網站,我需要從該網站的表中提取數據。然而,HTML網頁的來源有誤格式化,除了在碼錶,所以我不能使用提取部分代碼並在bash中解析HTML
xmllint --html --xpath <xpath> <file>
,因爲它不能正常工作,當HTML格式的網站上被打破了。
我的想法是使用curl和刪除表格上方和下方的代碼。當提取表時,代碼是乾淨的,它適合於xmllint工具(我可以使用xpath)。然而,刪除上面的所有內容對於shell來說都具有挑戰性,你可以在這裏看到:Sed doesn't backtrack: once it's processed a line, it's done. 有沒有一種方法如何僅從bash中的HTML網站中提取表的代碼? Suposse,代碼具有這種結構。
<html>
<head>
</head>
<body>
<p>Lorem ipsum ....</p>
<table class="my-table">
<tr>
<th>Company</th>
<th>Contact</th>
</tr>
</table>
<p>... dolor.</p>
</body>
</html>
我需要這樣的輸出正確地解析數據:
<table class="my-table">
<tr>
<th>Company</th>
<th>Contact</th>
</tr>
</table>
請不要給我減的,因爲試圖使用bash。
您可以檢查此文章: http://www.joyofdata.de/blog/using-linux-shell-web-scraping/ – Hackerman
您是否嘗試過使用HTML-Tidy清理HTML http://www.html-tidy.org/ –
我試過「 tidy -ashtml page.html -output page2.html「但不幸的是,它返回」在使用HTML Tidy生成整理版本之前,必須修復此文檔的錯誤。「它需要完全自動化。不管怎樣,謝謝。@ Dan-Dev –