Raj*_*jan 3 perl project web-scraping
我有兴趣学习Perl.我正在使用Learning Perl书籍和cpan的网站作为参考.
我期待使用Perl做一些web /文本抓取应用程序来应用我学到的任何内容.
请建议我一些好的选择.
(这不是作业.想在Perl中做一些可以帮助我利用基本Perl功能的东西)
Sin*_*nür 10
如果您要抓取的网页需要JavaScript才能正常运行,那么您需要的不仅仅是WWW :: Mechanize可以为您提供的功能.您甚至可能不得不求助于通过Perl控制特定浏览器(例如,使用Win32 :: IE :: Mechanize或WWW :: Mechanize :: Firefox).
我还没试过,但WWW :: Scripter还有WWW :: Scripter :: Plugin :: JavaScript插件.
用于Perl的最流行的Web抓取模块是WWW :: Mechanize,如果您不仅可以检索目标页面而且需要使用链接或表单导航到它,例如登录,那么这是非常好的.看看它的灵感的文件.如果您的需求很简单,您可以使用正则表达式从HTML中提取所需的信息(但要注意您的理智),否则最好使用HTML :: TreeBuilder等模块来完成工作.
一个看似有趣的模块,但我还没有真正尝试过,是WWW :: Scripter.它是WWW :: Mechanize的子类,但支持Javascript和AJAX,还集成了HTML :: DOM,这是从页面中提取信息的另一种方式.
正如其他人所说,WWW :: Mechanize是一个用于网络抓取任务的优秀模块; 你会很好地学习如何使用它,它可以使常见的任务变得非常容易.我已经将它用于几个网络抓取任务,它只是处理所有无聊的东西 - "到这里,找到这个文本的链接并按照它,现在找到一个名为'username'和'password'字段的表单,输入这些值并提交表格......".
Scrappy也非常值得一看 - 它可以让你用非常少的代码做很多事情 - 来自其文档的一个例子:
my $spidy = Scrappy->new;
$spidy->crawl('http://search.cpan.org/recent', {
'#cpansearch li a' => sub {
print shift->text, "\n";
}
});
Run Code Online (Sandbox Code Playgroud)
Scrappy 在引擎盖下使用了Web :: Scraper,您可能也希望将其视为另一种选择.
此外,如果您需要从HTML表中提取数据,HTML :: TableExtract使这很容易 - 您可以通过命名它包含的标题找到您感兴趣的表,并确实非常容易地提取数据,例如:
use HTML::TableExtract;
$te = HTML::TableExtract->new( headers => [qw(Date Price Cost)] );
$te->parse($html_string) or die "Didn't find table";
foreach $row ($te->rows) {
print join(',', @$row), "\n";
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11050 次 |
| 最近记录: |