Приложение Mechanize и Facebook - PullRequest
0 голосов
/ 12 апреля 2011

Я нашел один скрипт для доступа к информации о приложениях на этом форуме. В основном, я захожу на приложения 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 всегда возвращает первую исходную страницу.Как я могу сказать механизму ждать, пока он загрузит все страницы?

Нужна помощь, спасибо

1 Ответ

0 голосов
/ 12 апреля 2011

Я думаю, вам следует использовать подпрограмму progress, унаследованную от LWP :: UserAgent

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

из документов:

Это часто называют как ответ получен независимо от того, как содержание обрабатывается. Метод вызывается с $ status «begin» в начало обработки запроса и с $ state "end" перед запросом метод возвращает. Между этими $ status будет частью ответ, полученный в настоящее время или строка "галочка", если дробь не может быть рассчитывается.

Когда $ status «начать», второй аргумент является объектом запроса, в противном случае это объект ответа.

...