如何使用perl刮取ASP网站?

时间:2012-09-11 11:45:00

标签: perl asp-classic web-crawler

请告诉我哪个模块用于抓取一个完全用ASP开发的网站,而且所有内容的HTML语法都不正确。

2 个答案:

答案 0 :(得分:3)

使用哪种语言来开发网站并不重要。您(客户)从网站获得的所有内容都是生成的HTML(在这种情况下是破碎的HTML)。

您可以使用“LWP”库和“get”功能将网站内容读入变量...然后使用正则表达式对其进行分析。

像这样:

use strict;
use LWP::Simple;
my $url = 'http://...';
my $content = get $url;
if ($content =~ m/.../) {
    ...
}

答案 1 :(得分:1)

或者您可以使用WWW::Mechanize。它建立在LWPLWP::Simple简单子集)之上,并提供了许多方便的“类浏览器”行为。例如,具有登录cookie和内容的ASP生成网站的典型会话管理由Mechanize自动处理。

use strict; use warnings;
use WWW::Mechanize;
my $mech = WWW::Mechanize->new;
$mech->get( 'http:://www.example.org/login.asp' );
$mech->submit_form(
    form_number => 3,
    fields      => {
        username    => 'test',
        password    => 'secret',
    }
);

虽然这首先适用于测试,但它仍然具有LWP继承方法,您可以访问普通请求。因此,您也可以访问请求,同时仍具有内置解析器的强大功能来访问表单和链接。

另外考虑使用正确的HTML解析器,即使网站的输出不是很花哨。其中有几个可以处理它。它比构建a bunch of regexes容易得多。一旦你需要返回,这些将很难维护,因为页面已经改变了一些东西。

以下是有关此主题信息的相关问题列表: