有没有办法在不下载文件的情况下在域上 Grep 多个 HTML 页面?

有没有办法在不下载文件的情况下在域上 Grep 多个 HTML 页面?

我本质上是想在浏览器中Ctrl+多个站点。F

我有某个域名的一系列 URLhttps://exampleblog.com/posts/{1-50}

/posts/我想一次性grep 下面的所有的页面。每个页面都用 1 到 50 的有序整数来标识。

有没有办法不用下载就可以做到这一点wget?我想 grep 我从中得到的信息curl

我觉得有一个雄辩的管道或一行程序可以让我从终端执行此操作而无需下载(尽管可能很慢)。

答案1

请注意,即使 curl 会下载页面,它也不会将其写入文件,而是写入 stdout。

方法 1

curl支持按顺序获取 URL:

curl 'https://exampleblog.com/posts/[1-50]' | grep <searchterm>

方法 2

你可以做一个 for 循环:

for i in {1..50}
do
    curl https://exampleblog.com/posts/"$i" | grep <searchterm>
done

方法 3

如果 URL 中没有序列号,wget则可以使用递归。它将解析下载的页面中的 URL 并跟踪找到的链接。该--no-parent选项可确保它仅下载同一子目录中层次结构更深的页面,在本例中为questions

请注意,如果下载的页面中没有符合条件的链接,wget则不会加载它,即使该网站上的其他页面可能引用它。

wget --recursive --no-parent https://superuser.com/questions/1750443 -O ./test.out
grep <searchterm> test.out
rm test.out

相关内容