是否有用于计算网页上特定字符串出现次数的 CLI 命令?

是否有用于计算网页上特定字符串出现次数的 CLI 命令?

我想要找出某个网页在过去几年中不同时间使用某个特定单词或短语的次数;并且我想使用 archive.org 的结果页面作为该网页在一段时间内的来源来实现这一点。

我相当确定存在某种工具可以对网页进行单词搜索,并且我知道archive.org 上提供了所有可用的页面...

但我只能说这么多了。我相当擅长一些快速而粗糙的 bash 脚本和一些 python,但我没有直接访问网络的经验。互联网。随便吧。(看看我的无知程度?!)

我想我想知道的是:什么是一个好的 CLI 工具,可以对传递给它的任何 URL 进行字数统计,以及如何编写一个脚本来返回约 750 个按日期顺序排列的页面的 URL?或者 - 这有可能吗?

我确信有人可以在几秒钟内把这一切拼凑在一起,而不是给我一份三段式的“如何做”手册,这样我就可以一次性完成,但我至少还是想看看它是如何完成的。

archive.org 每天保存多次,而且数量并不总是相同。所以我想知道是否有办法查询“结果”页面,跟踪每个 URL 并检查创建日期,并将返回新日期的每个 URL 保存到某个文本文件中。这将允许我为步骤 2 构建一个按日期顺序排列的网页列表...

如果存在可以查找 URL 的工具,请对某些文本执行 grep(或类似操作)b,并返回b找到后,运行它并将输出通过管道传输到文本文件。我使用了一些可以在本地驱动器上执行此类操作的 CLI 工具,但我希望有一个程序可以执行以下操作:

对于 somefile.txt 中的 xurl;执行 wordcount -a=$xurl -b="搜索字符串“>> temp.txt;完成

答案1

您可以 curl url 并将其传递给 grep,如下所示

curl --silent https://www.google.cl | grep -c -i google

还要注意-i,这是一个不区分大小写的搜索。

从文件中批量执行(每行一个 URL)

wordToSearch='google'
#
while read url; do
    curl --silent "${url}" | grep -c -i "${wordToSearch}" >> temp.txt
done < fileWithUrl.txt

答案2

我看不到你提到的程序输入或“结果”页面是什么样的,但我会尝试这样解决这个问题:

curl允许您下载网页的源代码。这样curl archive.org/whatever您就可以以纯文本形式获得结果页面。

您可以将其输入到管道中grep并搜索 HTML 的锚标记 ( <a href="location.of/the-linked-page">a description of the link</a>)。以下是可用作起点的 grep 调用:(| grep -o '<a href.*</a>仅打印字符串的匹配部分。您可能需要用类替换和-o之间的空格,或者尝试使用非贪婪形式的,具体取决于您的输入。)您还将检索ahrefspace*全部该页面上的链接,因此需要另一轮(或多轮)grepping来删除导航链接,广告等。

之后,使用,您可以删除诸如、等sed“杂乱信息” ,以便仅检索纯链接。然后,您可以将输出输入到 for 循环中,该循环再次使用 curl 检索这些链接的内容。在<a>href输出,最后,您可以使用执行单词分析grep -c,正如 vidarlo 提到的。

相关内容