请告诉我哪个模块用于抓取一个完全用 ASP 开发的网站,并且它的所有内容都不是正确的 HTML 语法。
问问题
687 次
2 回答
3
使用哪种语言开发网站并不重要。您(客户)从网站获得的只是生成的 HTML(或在这种情况下损坏的 HTML)。
您可以使用“LWP”库和“get”函数将网站内容读入变量...然后使用正则表达式对其进行分析。
像这样:
use strict;
use LWP::Simple;
my $url = 'http://...';
my $content = get $url;
if ($content =~ m/.../) {
...
}
于 2012-09-11T12:05:41.393 回答
2
或者你可以使用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 解析器,即使网站的输出不是很花哨。周围有几个可以处理它。这比仅仅建立一堆正则表达式要容易得多。一旦您需要返回,这些将很难维护,因为页面已经更改了某些内容。
以下是包含此主题信息的相关问题列表:
于 2012-09-11T12:40:24.493 回答