我如何从网站中提取所有.zip链接?


0

是否有工具.zip从网站中提取所有链接并将其保存到.txt文件。我正在使用Linux薄荷。我想要.zip来自这个网站的所有链接:

http://all-free-download.com/free-photos/

你能指出这种联系的方式吗?对我来说如何找到一个并不明显。
reierpost

Answers:


0

我有一个解决方案,虽然它并不完美,需要你安装curlperl安装,两者都应该已经使用Linux Mint,尽管我的解决方案确实包含了我在CPAN上可用的Perl模块。再次cpan应该可以在Linux Mint上安装和安装,如果你还没有,你可能只需要配置它。

对于模块App :: ExtractLinks,您可以像这样安装它:

$ cpan App::ExtractLinks

只要您的Perl设置正确且路径中可见任何CPAN模块,您现在就可以extract-links在终端中运行。如果你这样做而没有输入任何东西,你将看不到任何东西,因为它只需要一个HTML流,并输出到标准输出(打印到你的终端)任何出现在href=""src=""属性的URL ,所以它真的很简单,但是通过将它与终端中的一些东西相结合,我们几乎可以实现您的要求。

如果将以下bash脚本保存到文件,并为其提供可执行权限chmod 755或运行如下bash filename

#!/usr/bin/env bash

while read url
do
    while read id
    do
        curl -s -I "http://files.all-free-download.com/free_download_graphic_$id.html" | perl -n -e '/^Location: (.*)$/ && print "$1\n"'
    done < <(curl -s "$url" | extract-links | grep "_download" | grep -Eo '[0-9]*')
done < <(curl -s http://all-free-download.com/free-photos/ | extract-links | grep "\/download\/")

现在让我尝试逐行解释。

首先,我们将以下命令的输出传递给while read循环。

curl -s http://all-free-download.com/free-photos/ | extract-links | grep "\/download\/")

这将从您提供的URL中获取HTML,将输出流传递给extract-links,(该-s参数curl仅表示curl静默执行此操作),然后显示页面中找到的所有链接。然后我们获取这个链接列表,只查找其中包含的链接/download/,这就是grep命令正在执行的操作。当然,这不是一般的解决方案,我必须查看您提供的站点的HTML源代码并找出它们的URL逻辑。

在我们只获得其中的链接后,我们只将/download/它们传递给while read循环,循环每次接收一个并将链接分配给变量$url。接下来我们再次进行类似的操作:

curl -s "$url" | extract-links | grep "_download" | grep -Eo '[0-9]*'

这与我们已经做过的事情相同但是在这个特定的链接上,这次过滤了其中的任何链接,_download然后只从链接中获取数字。这又是我弄清楚他们用来安排链接和下载的方案。

现在让我说一下,之所以相关原因是因为.zip网站上任何地方都没有任何直接链接文件,.zip当您导航到某些页面时,会在HTTP重定向后开始下载。这让我想到了最后一部分:

curl -s -I "http://files.all-free-download.com/free_download_graphic_$id.html" | perl -n -e '/^Location: (.*)$/ && print "$1\n"'

这只取了我们在上一步中检索到的链接中的数字,再次将它们管道化为一个while read循环,将每个链接分配为变量$id,然后我们再次使用curl-I选项,该选项仅检索标题(而不是下载文件) ,此时每个页面都会进行重定向,然后指向zip文件本身。我们curl通过内联perl脚本运行输出,该脚本只是获取LocationHTTP标头的正则表达式,该标头指定要重定向到哪个文件。

所以你最后要做的就是:

bash my_script.sh > links.txt

编辑

一个警告是,可能会出现重复的链接,只是基于我测试你提到的这个网站,所以记住这一点。

显然,这不是一个非常有效的操作,但是它再次是自动化的,并且没有任何其他方式来获取您想要的数据而没有对该站点的管理员访问权限。


先生,您的代码是完美的但它在100-150链接后停止一段时间后,如何升级此代码以获取所有链接或者可能在不同的网站上使用此代码?请重播给我没有人愿意帮助我
阿里haider
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.