我刚刚编写了一个脚本来从网站获取链接,然后将它们保存到文本文件中。
现在我正在处理我的正则表达式,因此它将php?dl=
从文本文件中获取包含在 url 中的链接:
例如:www.example.com/site/admin/a_files.php?dl=33931
当您将鼠标悬停在dl
网站上的按钮上时,它几乎就是您获得的地址。您可以从中单击下载或“右键单击保存”。
我只是想知道如何实现这一点,必须下载将下载*.txt
文件的给定地址的内容。当然,一切都来自剧本。
我刚刚编写了一个脚本来从网站获取链接,然后将它们保存到文本文件中。
现在我正在处理我的正则表达式,因此它将php?dl=
从文本文件中获取包含在 url 中的链接:
例如:www.example.com/site/admin/a_files.php?dl=33931
当您将鼠标悬停在dl
网站上的按钮上时,它几乎就是您获得的地址。您可以从中单击下载或“右键单击保存”。
我只是想知道如何实现这一点,必须下载将下载*.txt
文件的给定地址的内容。当然,一切都来自剧本。
结交WWW::Mechanize
你最好的新朋友。
原因如下:
/php\?dl=/
在这种情况下)follow_link
它可以通过方法跟踪那些链接get
定位这些链接的目标并将它们保存到文件中所有这一切都无需将您想要的链接保存在中间文件中!当您拥有适合工作的工具时,生活会很甜蜜...
例子
use strict;
use warnings;
use WWW::Mechanize;
my $url = 'http://www.example.com/';
my $mech = WWW::Mechanize->new();
$mech->get ( $url );
my @linksOfInterest = $mech->find_all_links ( text_regex => qr/php\?dl=/ );
my $fileNumber++;
foreach my $link (@linksOfInterest) {
$mech->get ( $link, ':contentfile' => "file".($fileNumber++).".txt" );
$mech->back();
}
您可以使用LWP::UserAgent下载该文件:
my $ua = LWP::UserAgent->new();
my $response = $ua->get($url, ':content_file' => 'file.txt');
或者,如果您需要文件句柄:
open my $fh, '<', $response->content_ref or die $!;
老问题,但是当我做快速脚本时,我经常使用“wget”或“curl”和管道。这可能不是跨系统可移植的,但如果我知道我的系统有这些命令中的一个或另一个,它通常很好。
例如:
#! /usr/bin/env perl
use strict;
open my $fp, "curl http://www.example.com/ |";
while (<$fp>) {
print;
}