#perl #www-mechanize
#perl #www-механизировать
Вопрос:
Я нашел один скрипт для доступа к информации о приложении с этого форума. В принципе, я получаю доступ к facebook apps и могу установить его автоматически.
Я попытался посмотреть, получу ли я страницу диалога разрешений, выполнив следующий код, но он возвращает не страницу разрешений, а первую страницу.
что делает facebook, так это несколько перенаправлений или meta или отправляет несколько других запросов, а затем отправляет пользователя на страницу разрешений, где мне нужно нажать кнопку разрешить. Но я не могу получить эту страницу окончательного разрешения для многих приложений. Вот код,
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_contentn";
Я не знаю, почему mechanize не получает доступ к окончательной загруженной странице. потребовалось некоторое время для загрузки страницы разрешений, но mechanize всегда возвращает первую исходную страницу. Как я могу сказать mechanize подождать, пока он загрузит все страницы?
Нужна помощь, спасибо
Ответ №1:
Я думаю, вам следует использовать progress
подраздел, унаследованный от LWP::UserAgent
$ua->progress( $status, $request_or_response )
из документов:
Это вызывается часто, поскольку ответ получен независимо от того, как обрабатывается контент. Метод вызывается со статусом $ «begin» в начале обработки запроса и с состоянием $ «end» перед возвратом метода запроса. Между этими $ status будет доля полученного в данный момент ответа или строка «tick», если доля не может быть вычислена.
Когда $status равен «begin», вторым аргументом является объект запроса, в противном случае это объект ответа.