目前正在解决一种解析网页数据的方法: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-Way但是我不是很确定:我试图在相同的URL上使用LWP :: UserAgent [见下文]使用不同的查询参数,我想知道LWP :: UserAgent为我们提供了循环查询参数的方法吗?我不确定LWP :: UserAgent是否有我们这样做的方法。好吧 - 我有时听说使用Mechanize更容易。但它真的更容易吗??
顺便说一句;但是,如果我采用PHP的方式,我可以用Curl做到这一点 - 我不能!
这是我的方法:我试图解决这个问题。我在Manpages和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
}
好吧,但现在我卡住了 - 我需要帮助 - 我可以这样做吗??
问候
零
答案 0 :(得分:3)
不要这样做。使用 HTTP实时标头(Firefox插件)或eqv。看看javasript在幕后做什么,同时从here选择你需要的东西到达那个页面(带表格)。
要从表中获取数据,如果要使用XPath,请使用HTML::TableExtract
或HTML::TreeBuilder::XPath
如果您想迭代查询,只需创建另一个var:
my $a = 'http://www.foundationfinder.ch/ShowDetails.php?Id=' . $q . '&InterfaceLanguage=&Type=Html';
并随时增加$ q,确保页面有效,然后尝试使用get