我有外部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 –