0

目前正在研究一种解析页面数据的方法:http ://www.foundationfinder.ch/

我喜欢在 Perl 中做这件事:嗯 - 我只是在思考这是完成这项工作的最佳方式。猜猜我正处于一个很好的学习曲线前面。;) 这个任务会给我一些很好的 Perl 课程。目前它有点超出我的头绪......;-)

所以这是一个示例页面:

查看结果页面

...并且正如我认为的那样,我可以在 Id= 0 和 Id= 100000 之间的某个范围内找到所有 790 个结果页,我想,我可以使用循环:

http://www.foundationfinder.ch/ShowDetails.php?Id=11233&InterfaceLanguage=&Type=Html http://www.foundationfinder.ch/ShowDetails.php?Id=927&InterfaceLanguage=1&Type=Html http://www.foundationfinder。 ch/ShowDetails.php?Id=949&InterfaceLanguage=1&Type=Html http://www.foundationfinder.ch/ShowDetails.php?Id=20011&InterfaceLanguage=1&Type=Html http://www.foundationfinder.ch/ShowDetails.php?Id= 10579&InterfaceLanguage=1&Type=Html

我以为我可以采用 Perl 方式,但我不太确定:我试图在具有不同查询参数的相同 URL [见下文] 上使用 LWP::UserAgent,我想知道 LWP::UserAgent 是否提供我们循环查询参数的方式?我不确定 LWP::UserAgent 是否有办法让我们做到这一点。嗯 - 我有时听说使用机械化更容易。但是真的容易吗!?

顺便提一句; 但是,如果我采用 PHP 方式,我可以使用 Curl 来实现 - 我不能!?

这是我的方法:我试图弄清楚。我更深入地研究了手册页和 Howtos。我们可以有一个循环构造 URL 并使用 Curl - 重复

如上所述:这里有一些结果页面;

http://www.foundationfinder.ch/ShowDetails.php?Id=11233&InterfaceLanguage=&Type=Html http://www.foundationfinder.ch/ShowDetails.php?Id=927&InterfaceLanguage=1&Type=Html

或者,我们可以添加一个 request_prepare 处理程序,在发送请求之前计算并添加查询参数。

再次:目的是什么:我想解析数据,然后我想将其存储在本地 MySQL 数据库中

我应该定义一个 extern_uid !?

然后像这样:

for my $i (0..10000) {
  $ua->get('http://www.foundationfinder.ch/ShowDetails.php?Id=', id => 21, extern_uid => $i);
  # process reply
}

好吧,但现在我被卡住了——我需要帮助——我能做这样的工作吗!?

问候

4

1 回答 1

3

不要这样做。使用HTTP 实时标头(Firefox 插件)或 eqv。查看 javasript 在您从此处选择所需内容以访问该页面(使用表格)时在幕后做了什么。

要从表中获取数据,请使用HTML::TableExtract或者HTML::TreeBuilder::XPath如果您想使用 XPath

如果您确实想遍历查询,只需创建另一个 var:

my $a = 'http://www.foundationfinder.ch/ShowDetails.php?Id=' . $q . '&InterfaceLanguage=&Type=Html';

并随时增加 $q ,确保页面在尝试加载之前有效get

于 2011-05-15T12:51:22.293 回答