从 html 页面获取链接

从 html 页面获取链接

我有一个包含多个 html 文件链接的 txt 文件。我需要访问此 txt 文件中的每个链接并获取其中的链接,然后将其保存到另一个 txt 文件中。

我怎样才能对 Linux 终端/shell 脚本/python 执行此操作?

答案1

安装lynx,然后:

lynx -listonly -nonumbers -dump input.html > links.txt

确保您的输入文件具有.html扩展名。

例如:

$ cat test.html
<a href="http://superuser.com">test</a>
http://google.com
$ lynx -listonly -nonumbers -dump test.html
http://superuser.com/

如果您有一个指向 HTML 文件的文本文件,您需要从中获取链接,您可以对其进行迭代:

while read -r file; do
  lynx -listonly -nonumbers -dump "$file" > "${file%.*}.txt
done < input.txt

这将读取文本文件中的每一行,使用 lynx 提取链接,并将它们写入与它们指向的 HTML 文件具有相同基本名称的 .txt 文件中。

答案2

将问题分为两部分。

1. 从文本文件中提取所有页面。

假设目标页面不需要登录或凭证。

在 Linux 或 Unix 机器上运行,或者赛格威在 Windows 上,在终端会话中

wget -i your.txt

2.从文件中提取链接

然后对于每个下载的文件,运行

cat FILE | \
sed 's/href=/\nhref=/g' | \
grep href=\" | \
sed 's/.*href="//g;s/".*//g' >> out.txt

如果缺少某些内容,请运行

sudo apt-get install coreutils wget grep sed

在 Debian Linux 上,尽管大多数系统默认附带它们。

如果您选择在 Cygwin 会话中执行此操作,请记住在安装时选择Core UtilitiesWget和。grepsed

相关内容