【发布时间】:2017-03-09 01:58:50
【问题描述】:
我想通过 HTTPS 下载大约 200 个不同的 HTML 文件,并从每个文件中提取页面标题并将标题放入文本文档中。
如何使用 Perl 通过 HTTPS 下载文件?我在 Google 上进行了搜索,但没有找到非常有用的信息或示例。
【问题讨论】:
-
在这两个答案中,您选择接受 3 票反对的答案和 7 票赞成的答案?!
我想通过 HTTPS 下载大约 200 个不同的 HTML 文件,并从每个文件中提取页面标题并将标题放入文本文档中。
如何使用 Perl 通过 HTTPS 下载文件?我在 Google 上进行了搜索,但没有找到非常有用的信息或示例。
【问题讨论】:
看看HTML::HeadParser,它是HTML::Parser 分布的一部分。它将为您解析一个 HTML 标头以提取 <title> 标记内容。
为了获取 HTML 内容,有大量可用的 CPAN 模块。一个这样的模块是LWP::Curl,它属于libwww-perl 系列。在此网站上搜索many discussions of fetching HTML 以了解更多信息。
要通过 HTTPS 下载,请查看 libwww-perl 下的文档。当前在 libwww-perl 下使用 SSL 的“标准”方式是通过Crypt::SSLeay。
【讨论】:
查找下载部分信息的好地方是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 中有一个站点列表(每行一个 URL),您可以将其与 $ cat sites.list | perl titlegrab.pl 一起使用以查看所有标题。
或者.. 重定向到某个输出文件,例如$ cat sites.list | perl titlegrab.pl > results.txt
【讨论】: