Я пытаюсь войти на Youtube с помощью WWW: Механизировать и использовать формы() для распечатки всех форм на странице после входа в систему. Мой скрипт успешно регистрируется, а также успешно переходит на Youtube .com/Входящие; Однако по какой-то причине Mechanize не может видеть какие-либо формы на Youtube.com/inbox. Он просто возвращает пустое. Вот мой код:WWW: Механизировать форму Выбрать
#!"C:\Perl64\bin\perl.exe" -T
use strict;
use warnings;
use CGI;
use CGI::Carp qw/fatalsToBrowser/;
use WWW::Mechanize;
use Data::Dumper;
my $q = CGI->new;
$q->header();
my $url = 'https://www.google.com/accounts/ServiceLogin?uilel=3&service=youtube&passive=true&continue=http://www.youtube.com/signin%3Faction_handle_signin%3Dtrue%26nomobiletemp%3D1%26hl%3Den_US%26next%3D%252Findex&hl=en_US<mpl=sso';
my $mechanize = WWW::Mechanize->new(autocheck => 1);
$mechanize->agent_alias('Windows Mozilla');
$mechanize->get($url);
$mechanize->submit_form(
form_id => 'gaia_loginform',
fields => { Email => 'myemail',Passwd => 'mypassword' },
);
die unless ($mechanize->success);
$url = 'http://www.youtube.com/inbox';
$mechanize->get($url);
$mechanize->form_id('comeposeform');
my $page = $mechanize->content();
print Dumper($mechanize->forms());
Mechanize не в состоянии видеть любые формы в youtube.com/inbox, однако, как я уже сказал, я не могу печатать все формы из начального звена, независимо от того, что я могу изменить его ...
Заранее благодарим.
У меня нет учетной записи Youtube, поэтому я не могу проверить запуск вашей программы. Я предполагаю, что это обычная проблема создаваемых JavaScript форм; когда вы печатаете '$ page', вы не увидите их в HTML. Если это действительно так, либо используйте один из трех классов класса Mechanize, совместимых с JS, или, лучше, отказаться от скрининга экрана и использовать API вместо этого: см. Http://youtube.com/dev и [WebService :: GData :: YouTube] (http://p3rl.org/WebService::GData::YouTube). – daxim