哎呀,我又有一个问题:
我的任务是阅读网页并从该页面中提取链接(使用HTML::TokeParser很容易)。然后,他(我的老板)坚持要求我从这些链接中阅读并获取每个页面的一些详细信息,并将所有信息解析为XML文件,以便以后可以阅读。
因此,我可以简单地设置如下:
#!/usr/bin/perl -w
use strict;
use LWP::Simple;
require HTML::TokeParser;
$|=1; # un buffer
my $base = 'http://www.something_interesting/';
my $path = 'http://www.something_interesting/Default.aspx';
my $rawHTML = get($path); # attempt to d/l the page to mem
my $p = HTML::TokeParser->new(\$rawHTML) || die "Can't open: $!";
open (my $out, "> output.xml") or die;
while (my $token = $p->get_tag("a")) {
my $url = $token->[1]{href} || "-";
if ($url =~ /event\.aspx\?eventid=(\d+)/) {
( my $event_id = $url ) =~ s/event\.aspx\?eventid=(\d+)/$1/;
my $text = $p->get_trimmed_text("/a");
print $out $event_id,"\n";
print $out $text,"\n";
my $details = $base.$url;
my $contents = get($details);
# now set up another HTML::TokeParser, and parse each of those files.
}
}
这个方法在页面上大约只有5个链接的情况下可能还可以,但是我正在尝试从 ~600 个链接中读取信息,并从每个页面获取信息。因此,我的方法需要花费很长时间... 我实在不知道需要多久才能完成,因为我从来没有让它完成过。
我的想法是只在需要时获取信息(例如,通过查找链接的 Java 应用程序获取信息),但是这种方法似乎不可行,所以我转向你们寻求帮助 :)
有没有办法改进这个过程呢?