如何提取一个网页的所有外部链接并保存到文件中?
如果有任何命令行工具那就太好了。
这个问题完全一样这里,答案在 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、仅从特定页面块中提取链接等。
pip install BeautifilSoup
如果你在 Linux 上,安装 BeautifilSoup 就像运行一样简单easy_install BeautifilSoup
。在 Win32 上,它可能是最容易使用的二进制安装程序。