0

我从这个论坛找到了一个用于访问应用程序信息的脚本。基本上,我正在访问 facebook 应用程序,并且可能会自动安装它。

我试图通过以下代码查看是否获得了权限对话框页面,但它没有返回权限页面,而是返回第一页。

facebook 所做的是多次重定向或元或发送少量其他请求,然后将用户登陆到我需要单击允许按钮的权限页面。但我无法获得许多应用程序的最终许可页面。这是代码,

use strict;
use WWW::Mechanize;
use HTTP::Cookies;

my $url = "http://www.facebook.com";

my $appurl = "http://apps.facebook.com/funmoods/";

my $username = 'mail';
my $password = 'pass';

my $mech = WWW::Mechanize->new();
$mech->cookie_jar(HTTP::Cookies->new());
$mech->get($url);
$mech->form_name('menubar_login');
$mech->field(email => $username);
$mech->field(pass => $password);
$mech->click();
my $facebook_content = $mech->content();
# go to an app url
$mech->get($appurl);
my $app_content = $mech->content();
print "$app_content\n";

我不知道为什么 mechanize 不访问最终加载的页面。加载权限页面需要一些时间,但 mechanize 总是返回第一个源页面。我如何告诉 mechanize 等到它加载所有页面?

需要帮助谢谢

4

1 回答 1

0

我认为您应该使用progress从 LWP::UserAgent 继承的 sub

$ua->progress( $status, $request_or_response ) 

来自文档:

无论内容如何处理,都会在收到响应时频繁调用它。在处理请求开始时使用 $status "begin" 调用该方法,并在请求方法返回之前使用 $state "end" 调用该方法。在这些 $status 之间将是当前收到的响应的分数,如果无法计算分数,则为字符串“tick”。

当 $status 为“开始”时,第二个参数是请求对象,否则是响应对象。

于 2011-04-12T15:39:46.193 回答