2010-01-03 50 views
1

我想通过HTTPS下载约200个不同的HTML文件,并从每个文件中提取页面的标题并将标题放入文本文档中。如何使用Perl通过HTTPS下载文件?

我将如何使用Perl下载使用HTTPS的文件?我搜索了Google,但没有找到非常有用的信息或示例。

+0

在这两个答案中,你选择接受3分与7分共享的那个? – Ether 2010-01-04 19:12:45

回答

3

查找下载部分信息的好地方是libwww-perl cookbook

这是一些基本的示例代码。这不一定是最好的方法,但假设你有LWP模块(可从CPAN获得),它应该可以工作。

#!/usr/bin/perl 

use warnings; 
use strict; 
use LWP::Simple; 

while (my $site = <STDIN>) 
{ 
    my $doc = get $site; 
    if (defined($doc)) 
    { 
     if ($doc =~ m/<title>(.*)<\/title>/i) 
     { 
      print "$1\n"; 
     } 
    } 
} 

你可能要添加更多花俏,用于进行反向转义文本,处理错误的条件下,在多线程并行执行请求,伪造用户代理例如Mozilla等:)

如果保存此作为titlegrab.pl,并且您拥有sites.list中的网站列表(每行一个网址),您可以使用$ cat sites.list | perl titlegrab.pl查看所有标题。

或..重定向到某个输出文件,例如$ cat sites.list | perl titlegrab.pl > results.txt

+0

任何想法为什么我得到这个返回,当我从你给我的链接使用HTTPS例子: 500通过包“LWP :: Protocol :: https :: Socket”找不到对象方法“new” – adhanlon 2010-01-03 19:33:44

+2

可能需要手动安装LWP依赖于https的Net :: SSL模块。再次,这应该很容易通过CPAN来完成。 – user242275 2010-01-03 19:43:14

+1

不要从STDIN读取 - 从ARGV(或本例中的<>)读取。也不要使用正则表达式(并在此处解析)来解析HTML - 使用HTML解析器。 – 2010-01-03 21:59:32

相关问题