首页 > 解决方案 > 如何使用 wget 下拉域列表并使用 grep 扫描它们

问题描述

我有一个包含在名为“domains.txt”的文件夹中的域名列表,格式如下:

www.google.com
www.stackoverflow.com
www.apple.com
etc...

我想执行 wget 命令来下拉“domains.txt”中列出的每个域的副本并将其保存为 .html 页面。

我可以使用单独执行此操作,wget www.google.com但我想知道,我可以遍历列表并将每个域名保存为单独的 .html 文件,而不是单独执行每个操作吗?

我要执行的第二个操作是扫描这些下拉的 .html 文件中的关键字,我将其包含在一个名为“keywords.txt”的文本文件中。它们的格式如下:

first_keyword
second_keyword
third_keyword
etc...

理想情况下,我希望有一个将域名打印到文本文件的输出,如果发现它包含“keywords.txt”中包含的任何关键字,则在它旁边带有“是”。如果可以打印在每个域旁边找到的关键字,那就太好了,但简单的“是”也很棒。我是 Linux 和脚本的新手,所以任何帮助都将不胜感激!

标签: linuxshellgrepwget

解决方案


我假设文件不包含引号。否则我需要更多代码来删除引号。

域.txt

www.google.com
www.stackoverflow.com
www.apple.com

关键字.txt

first_keyword
second_keyword
third_keyword

你可以试试这样的

outfile=tmp.html

while IFS= read -r domain
do
    wget -O "$outfile" "$domain"

    if fgrep -q -f keywords.txt "$outfile"
    then
        echo "$domain" yes
    else
        echo "$domain" no
    fi

    rm "$outfile"

done < domains.txt

推荐阅读