用Perl Mechanize处理Dom:完成一个小程序

用Perl Mechanize处理Dom:完成一个小程序,perl,parsing,dom,mechanize,relative-path,Perl,Parsing,Dom,Mechanize,Relative Path,我目前正在使用一台小型收割机。所有数据都可以自由使用,没有任何限制或版权问题 到目前为止我所拥有的:如果我选择WWW::Mechanize,收获任务应该不会有问题-尤其是在进行基于表单的搜索和选择单个条目时。嗯-我猜算法基本上是两个嵌套循环:外部循环运行基于表单的搜索,内部循环处理搜索结果 外部循环将在页面的第二个搜索表单上使用select()和submit\u form()函数。我们可以在这里使用DOM处理吗?那么,我们如何才能得到选择值呢 通过结果的内部循环将使用follow link函数通

我目前正在使用一台小型收割机。所有数据都可以自由使用,没有任何限制或版权问题

到目前为止我所拥有的:如果我选择WWW::Mechanize,收获任务应该不会有问题-尤其是在进行基于表单的搜索和选择单个条目时。嗯-我猜算法基本上是两个嵌套循环:外部循环运行基于表单的搜索,内部循环处理搜索结果

外部循环将在页面的第二个搜索表单上使用
select()
submit\u form()
函数。我们可以在这里使用DOM处理吗?那么,我们如何才能得到选择值呢

通过结果的内部循环将使用follow link函数通过以下调用获取实际条目

$mech->follow_link(url_regex => qr/webgrab_path=http:\/\/evs2000.*\?
Id=\d+$/, n => $result_nbr);
这将把我们的机械浏览器转发到入口页面。基本上,URL查询查找具有webgrap_路径到Id模式的链接,该模式对于每个数据库条目都是唯一的。
$result\u nbr
变量告诉Mechan下一步应该遵循哪一个结果

如果我们有几个结果页,我们也会使用相同的技巧遍历结果页。对于条目信息的语义提取,我们可以使用XML:LibXML的html解析器解析实际条目的内容(该解析器在本页上运行良好),因为它提供了一些强大的DOM选择(使用XPath)方法。 在Perl的几行代码中(最多20行-可能更少),页面的实际循环应该是可行的

但是等待:输入页面的处理将是最复杂的部分 这是剧本的一部分

方法:原则上,我们可以使用单个while循环执行相同的算法 如果我们巧妙地使用back()函数

您能给我一个开始的提示吗?在Perl::Mechanize中处理条目页面

以下是我所拥有的:

 GetThePage(
    starting url 
);
sub GetThePage {
    my $mech ...
    my @pages = ...
    while(@pages) {
       my $page = shift @pages;
       $mech->get( $page );
       push @pages, GetMorePages( $mech );
       SomethingImportant( $mech );
       SomethingXPATH( $mech );
    }
}

问题是如何找到DOM路径。

你真的想用于这种事情。

你真的想用于这种事情。

使用Firebug、Opera Dragonfly、Chromium开发工具


调用指定元素上的上下文菜单,将XPath表达式或CSS选择器(对)复制到剪贴板。

使用Firebug、Opera Dragonfly和Chromium开发工具


调用指定元素上的上下文菜单,将XPath表达式或CSS选择器(对)复制到剪贴板。

不回答如何查找DOM路径的问题不回答如何查找DOM路径的问题