如何使用Perl的LWP :: UserAgent获取具有不同查询字符串的相同URL?

时间:2010-10-22 21:50:30

标签: perl url methods lwp-useragent

我查阅了关于使用LWP的文章,但我仍然迷路了!在这个网站上我们找到了许多学校的名单;请参阅overview-page并按照一些链接获取一些结果页:

我想使用LWP :: UserAgent解析网站并进行解析:想要使用HTML :: TreeBuilder :: XPath或HTML :: TokeParser

目前我正在考虑选择正确的获取请求! 我对LWP :: Useragent有一些问题。可以通过直接链接访问概述的子网站。但是 - 注意:每个网站都有内容。例如以上提到的结果页面的以下URL。

作为新手,我不能通过发布完整的URL向您显示不同结局的结尾,但在这里您可以看到结尾:

id=21&extern_eid=709
id=21&extern_eid=789
id=21&extern_eid=1297
id=21&extern_eid=761

URL的末尾有许多不同的URL。问题是:如何运行LWP :: UserAgent?我想要获取和解析& **所有 - 1000个网站。**

问题; LWP是否自动完成工作!?或者我必须设置LWP :: UserAgent,它将自动查找不同的URL ...

解决方案:也许我们必须在那里用0到10000来计算

extern_eid = 709 - (从零到100000)这里

www-db.sn.schule.de/index.php?id=21&extern_eid=709

BTW:这里是LWP用户代理的数据;

  

请求方法描述的方法   在本节中用于发送   通过用户代理请求。该   以下请求方法是   提供:

     

$ ua-> get($ url)$ ua-> get($ url,   $ field_name => $ value,...)

     

此方法将调度GET   请求给定的$ url。进一步   可以给出参数来初始化   请求的标头。这些是   作为单独的名称/值对给出。   返回值是响应对象。   有关说明,请参阅HTTP :: Response   它提供的界面。那里   仍然是一个响应对象   当LWP无法连接时返回   URL中指定的服务器或何时   协议处理程序中的其他失败   发生。

问题是:如何在上述网站上正确使用LWP :: UserAgent - 有效!?

我期待着所有的帮助!

2 个答案:

答案 0 :(得分:0)

如果我正确理解你的问题,你试图在具有不同查询参数的相同URL上使用LWP :: UserAgent,并且你想知道LWP :: UserAgent是否提供了循环查询参数的方法?

我认为LWP :: UserAgent没有办法让你这样做。但是,您可以使用循环构造URL并重复使用LWP :: UserAgent:

for my $id (0 .. 100000)
{
    $ua->get($url."?id=21&extern_eid=".(709-$id))
    //rest of the code
}

或者,您可以添加request_prepare处理程序,在发出请求之前计算并添加查询参数。

答案 1 :(得分:0)

您描述了以下链接以进行网络抓取。 LWP子类WWW::Mechanize比您当前的尝试更容易做到这一点。