如何从HTML文件中获取URL?

Aar*_*ron 3 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/
...

Sto*_*fke 7

方法1

步骤1:

wget "http://www.cse.psu.edu/~groenvel/urls.html"
Run Code Online (Sandbox Code Playgroud)

第2步:

perl -0ne 'print "$1\n" while (/a href=\"(.*?)\">.*?<\/a>/igs)' /PATH_TO_YOUR/urls.html | grep 'http://' > /PATH_TO_YOUR/urls.txt
Run Code Online (Sandbox Code Playgroud)

只需用文件路径替换" / PATH_TO_YOUR / "即可.这将产生仅包含url的文本文件.

方法2

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

步骤1:

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

方法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
Run Code Online (Sandbox Code Playgroud)

方法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
Run Code Online (Sandbox Code Playgroud)