使用grep过滤掉HTML代码

时间:2013-05-10 05:56:18

标签: bash unix grep filtering

我正在使用bash shell脚本开发项目。想法是grep wget检索页面,以便在网页上获取某个段落。我想要复制的区域通常以

开头
<p><b>

但该段还包含其他一些HTML代码,例如锚标记,我不希望它们出现在grep的输出中。
我试过了

cat page.html| grep "<p><b>" >grep.txt

然后我grep输出文件,现在包含我想要的段落

cat grep.txt|grep -v '<p>|<b>|<a>' >grep.txt

但是它所做的只是清除文件中的所有内容而不读取任何内容。如何让它只排除HTML代码?

我也试图按照我grep段落中的链接,以便对这些页面做同样的事情。只有2级深,所以主页面然后是什么子页面源于主页的第一段。我知道这是一个很难的想法,希望我能够很好地解释得到一些帮助。如果您有任何想法,我们将不胜感激。

2 个答案:

答案 0 :(得分:1)

你必须在bash中这样做吗?在我看来,Python会适应这个问题,特别是一个名为Beautiful Soup的库。

我过去用它来解析HTML,这是我能找到的最简单的工具。它有很好的documentation for dealing with html

也许你可以创建一个独立的python代码来提取HTML然后回显你所追求的字符串。如果你想对字符串执行一些bash函数,那么可以从你的bash脚本中调用python代码。

答案 1 :(得分:0)

我知道这已经有 7 年的历史了,但只是发布了我使用 bash 的解决方案

https://api.jquery.com/jquery.grep/