使用Perl下载文件

时间:2010-07-07 04:34:25

标签: html perl download

我已将代码更新为这样。当我运行它虽然它说它找不到指定的链接。还有什么是测试它确实连接到页面的好方法?

#!/usr/bin/perl -w
use strict;
use LWP;
use WWW::Mechanize;

my $mech = WWW::Mechanize->new();
my $browser = LWP::UserAgent->new;

$browser->credentials(
    'Apache/2.2.3 (CentOS):80',
    'datawww2.wxc.com',
    '************' => '*************'
);

my $response = $browser->get(
'http://datawww2.wxc.com/kml/echo/MESH_Max_180min/'
);

$mech->follow_link( n => 8);

(原帖)

使用Perl下载小文件的最佳方法是什么?

我查看了CPAN并找到了lwp-download,但似乎只能从链接下载。我有一个页面,链接每30分钟更改一次,名称中包含日期和时间,因此它们永远不会相同。我可以使用内置功能吗?谷歌上的每个人都在说使用Wget,但是如果可能的话,我有点想坚持使用Perl来帮助我在使用它时更好地学习它。

还有一个用户名和密码可以登录该站点。我知道如何使用Perl访问该网站,但我认为这可能会改变我可以用来下载的内容。

2 个答案:

答案 0 :(得分:3)

如您在其他问题的评论中所述:here

您可以使用相同的方法将.csv文件作为.html或任何其他基于文本的文件检索。

#!/usr/bin/perl -w
use strict;
use LWP::Simple;

my $csv = get("http://www.spc.noaa.gov/climo/reports/last3hours_hail.csv")
           or die "Could not fetch NWS CSV page.";

要登录,您可能需要使用WWW::Mechanize填写网络表单(查看$mech->get()$mech->submit_form()$mech->follow_link()

答案 1 :(得分:2)

基本上,您需要获取页面,解析它以获取URL,然后下载文件。

就个人而言,我使用HTML::TreeBuilder::XPath,编写一个快速的XPath表达式直接转到正确的href属性节点,然后将其插入LWP。

use HTML::TreeBuilder::XPath;
my $tree = HTML::TreeBuilder::XPath->new;
$tree->parse({put page content here});
foreach($tree->findnodes({put xpath expression here}){
    {download the file}
}