我需要获取一长串有效的URL来测试我的DNS服务器。我找到了一个网页,里面有很多链接,可能会产生很多很好的链接(http://www.cse.psu.edu/~groenvel/urls.html),我觉得最简单这样做的方法是下载HTML文件并简单地grep URL。但是,我无法通过链接列出我的结果。
我知道有很多方法可以做到这一点。我不是那么挑剔。
鉴于上面的URL,我想要一个所有URL列表(每行一个),如下所示:
http://www.cse.psu.edu/~groenvel/
http://www.acard.com/
http://www.acer.com/
......
答案 0 :(得分:7)
<强>步骤1:强>
wget "http://www.cse.psu.edu/~groenvel/urls.html"
<强>步骤2:强>
perl -0ne 'print "$1\n" while (/a href=\"(.*?)\">.*?<\/a>/igs)' /PATH_TO_YOUR/urls.html | grep 'http://' > /PATH_TO_YOUR/urls.txt
只需将“ / PATH_TO_YOUR / ”替换为您的文件路径。这将生成一个只包含网址的文本文件。
如果你安装了lynx,你只需一步即可完成:
<强>步骤1:强>
lynx --dump http://www.cse.psu.edu/~groenvel/urls.html | awk '/(http|https):\/\// {print $2}' > /PATH_TO_YOUR/urls.txt
使用curl:
<强>步骤1 强>
curl http://www.cse.psu.edu/~groenvel/urls.html 2>&1 | egrep -o "(http|https):.*\">" | awk 'BEGIN {FS="\""};{print $1}' > /PATH_TO_YOUR/urls.txt
使用wget:
wget -qO- http://www.cse.psu.edu/~groenvel/urls.html 2>&1 | egrep -o "(http|https):.*\">" | awk 'BEGIN {FS="\""};{print $1}' > /PATH_TO_YOUR/urls.txt
答案 1 :(得分:1)
你需要wget,grep,sed。 我会尝试一个解决方案并稍后更新我的帖子。
更新
wget [the_url];
cat urls.html | egrep -i '<a href=".*">' | sed -e 's/.*<A HREF="\(.*\)">.*/\1/i'