我想通过HTTPS下载约200个不同的HTML文件,并从每个文件中提取页面的标题并将标题放入文本文档中。如何使用Perl通过HTTPS下载文件?
我将如何使用Perl下载使用HTTPS的文件?我搜索了Google,但没有找到非常有用的信息或示例。
我想通过HTTPS下载约200个不同的HTML文件,并从每个文件中提取页面的标题并将标题放入文本文档中。如何使用Perl通过HTTPS下载文件?
我将如何使用Perl下载使用HTTPS的文件?我搜索了Google,但没有找到非常有用的信息或示例。
查找下载部分信息的好地方是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
任何想法为什么我得到这个返回,当我从你给我的链接使用HTTPS例子: 500通过包“LWP :: Protocol :: https :: Socket”找不到对象方法“new” – adhanlon 2010-01-03 19:33:44
可能需要手动安装LWP依赖于https的Net :: SSL模块。再次,这应该很容易通过CPAN来完成。 – user242275 2010-01-03 19:43:14
不要从STDIN读取 - 从ARGV(或本例中的<>)读取。也不要使用正则表达式(并在此处解析)来解析HTML - 使用HTML解析器。 – 2010-01-03 21:59:32
看看HTML::HeadParser,HTML::Parser分配的一部分。它将解析一个HTML标题,以提取标记内容。
对于获取HTML内容,有大量可用的CPAN模块。一个这样的模块是LWP::Curl,其属于libwww-perl家族。在网站上搜索many discussions of fetching HTML以了解更多信息。
要通过HTTPS下载,请查看libwww-perl下的文档。目前在libwww-perl下使用SSL的“标准”方式是通过Crypt::SSLeay。
在这两个答案中,你选择接受3分与7分共享的那个? – Ether 2010-01-04 19:12:45