1

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

<p><b>

但是该段落还包含我不想出现在 grep 输出中的其他一些 HTML 代码,例如锚标记。
我努力了

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

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

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

但是它所做的只是从文件中清除所有内容,而不是读取任何内容。我怎样才能让它只排除 HTML 代码?

我还尝试遵循我 grep 段落中的链接,以便对这些页面执行相同的操作。只有 2 层深,所以主页和子页面都源于主页的第一段。我知道这是一个困难的想法,希望我解释得足够好以获得一些帮助。如果您有任何想法,我们将不胜感激。

4

2 回答 2

1

您必须在 bash 中执行此操作吗?在我看来,Python 可以解决这个问题,特别是一个名为Beautiful Soup的库。

我过去用它来解析 HTML,它是我能找到的最简单的工具。它有很好的处理 html 的文档

也许您可以制作一个独立的 python 代码来提取 HTML,然后回显您所追求的字符串。如果您想对字符串执行一些 bash 函数,则可以从 bash 脚本内部调用 python 代码。

于 2013-05-10T10:33:45.353 回答
0

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

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

于 2021-01-29T17:47:11.520 回答