如何从HTML文件中提取URL?

3
我需要一份长列表,用于测试我的DNS服务器上的有效URL。我找到了一个网页,里面有很多链接,可能会产生很多好的链接(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个回答

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/”替换为您的文件路径,就可以生成一个只包含URL的文本文件。

方法二

如果您已经安装了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

你需要使用wget、grep和sed。

我会尝试一个解决方案,并稍后更新我的帖子。

更新:

wget [the_url];

cat urls.html | egrep -i '<a href=".*">' | sed -e 's/.*<A HREF="\(.*\)">.*/\1/i'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接