请告诉我哪个模块用于抓取一个完全用ASP开发的网站,而且所有内容的HTML语法都不正确。
答案 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。它建立在LWP
(LWP::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容易得多。一旦你需要返回,这些将很难维护,因为页面已经改变了一些东西。
以下是有关此主题信息的相关问题列表: