我已将代码更新为这样。当我运行它虽然它说它找不到指定的链接。还有什么是测试它确实连接到页面的好方法?
#!/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访问该网站,但我认为这可能会改变我可以用来下载的内容。
答案 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}
}