如何提取网页的所有外部链接?

如何提取网页的所有外部链接?

如何提取一个网页的所有外部链接并保存到文件中?

如果有任何命令行工具那就太好了。

这个问题完全一样这里,答案在 google.com 上很有效,但出于某种原因,它不适用于 youtube。我来解释一下:让我们举个例子这一页如果我尝试运行

lynx -dump http://www.youtube.com/playlist?list=PLAA9A2EFA0E3A2039&feature=plcp | awk '/http/{print $2}' | grep watch > links.txt

然后,与在 google.com 上使用不同,它首先执行 lynx 的转储,然后将控制权交给 awk(出于某种原因,输入为空),最后不向文件 links.txt 写入任何内容。只有在这之后,它才会显示未过滤的 lynx 转储,而无法将其传输到其他地方。

先感谢您!

答案1

lynx -dump 'http://www.youtube.com/playlist?list=PLAA9A2EFA0E3A2039&feature=plcp' | awk '/http/{print $2}' | grep watch > links.txt

有效。您需要转义&链接中的。

在您的原始行中,未转义的&将把 Lynx 抛到后台,为 留下空输入links.txt。后台进程仍会将其输出写入您所在的终端,但正如您所注意到的,它不会执行重定向>(歧义:哪个进程应该写入文件?)。

附录:我假设您的原始命令中存在拼写错误:开头和结尾'不应该存在。否则,您会在尝试执行不存在的命令时收到其他错误消息。删除这些命令将产生您描述的行为。

答案2

使用您最喜欢的网站并搜索“网站抓取脚本”或“网站抓取脚本”以及您最熟悉的任何编程语言。您有成千上万个选项,因此请尽可能进行最详细的搜索。

答案3

虽然有很多选项可供选择,但我建议使用带有 BeautifilSoup 的 python - 这将使您完全控制该过程,包括遵循重定向、处理自签名/过期的 SSL 证书、解决无效 HTML、仅从特定页面块中提取链接等。

例如,请查看此线程: https://stackoverflow.com/questions/1080411/retrieve-links-from-web-page-using-python-and-beautiful-soup

pip install BeautifilSoup如果你在 Linux 上,安装 BeautifilSoup 就像运行一样简单easy_install BeautifilSoup。在 Win32 上,它可能是最容易使用的二进制安装程序

相关内容