如何从HTML文件中获取URL?

时间:2011-02-15 07:28:20

标签: url grep

我需要获取一长串有效的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/
  ......

2 个答案:

答案 0 :(得分:7)

方法1

<强>步骤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 / ”替换为您的文件路径。这将生成一个只包含网址的文本文件。

方法2

如果你安装了lynx,你只需一步即可完成:

<强>步骤1:

lynx --dump http://www.cse.psu.edu/~groenvel/urls.html | awk '/(http|https):\/\// {print $2}' > /PATH_TO_YOUR/urls.txt

方法3

使用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

方法4

使用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'