Я пытаюсь обновить статус на facebook с помощью Mechanize.I мочь войти в систему, используя скрипт, но не смог обновить. Я подтвердил, что id
формы для обновления статуса - "u_0_w"
. Но выбор метода form_id
говорит: «Нет формы с идентификатором« u_0_w «». Мой сценарий заключается в следующем:Обновление статуса Facebook с использованием WWW :: Mechanize
use WWW::Mechanize;
use strict;
use warnings;
use Data::Dumper;
use HTTP::Cookies::Netscape;
my $cookiesfilename='/home/xxx/xxx/cookies.txt';
my $out;
my $mech = WWW::Mechanize->new(cookie_jar => HTTP::Cookies::Netscape->new(file => $cookiesfilename));
$mech->get("https://www.facebook.com/login.php");
my $response=$mech->submit_form(
fields => {
email => '[email protected]',
pass => 'xxxxx',
}
);
#my $array=$mech->forms();
#$mech->get('/home.php');
print Dumper($mech->forms());
#$mech->form_id("u_0_w");
$mech->submit_form(
fields => {
xhpc_message_text=>'Why so serious'
}
);
print $response->status_line;
open($out, ">", "output_page.html") or die "Can't open output_page.html: $!";
print $out $response->decoded_content;
Затем я попытался напечатать все формы на странице с помощью Dumper вывода является:
$VAR1 = bless({
'default_charset' => 'UTF-8',
'enctype' => 'application/x-www-form-urlencoded',
'accept_charset' => 'UNKNOWN',
'action' => bless(do{\(my $o = 'https://www.facebook.com/search/web/direct_search.php')}, 'URI::https'),
'method' => 'GET',
'attr' => {
'method' => 'get'
},
'inputs' => [
bless({
'tabindex' => '-1',
'value' => '1',
'class' => '_42ft _42fu _4w98',
'type' => 'submit'
}, 'HTML::Form::SubmitInput'),
bless({
'/' => '/',
'autocomplete' => 'off',
'tabindex' => '1',
'name' => 'q',
'aria-label' => 'Search Facebook',
'value_name' => '',
'class' => 'inputtext _586f',
'type' => 'text',
'id' => 'u_0_b',
'role' => 'combobox',
'placeholder' => 'Search Facebook'
}, 'HTML::Form::TextInput')
]
}, 'HTML::Form');
Это означает, что он не обнаруживает форму обновления статуса его обнаружения только Facebook поиск форма.
- В чем может быть проблема для механизации не обнаруживать все элементы формы?
- Форма содержит
<button type="submit">
. Поддерживает ли это механизм?
Может быть, вы должны смотреть в API, которые facebook предоставляет. Использование скриншотов/автоматизации, подобных этому, может быть против их ToS. – simbabque
@simbabque да жаль, что это 'form_id'. Я не злоупотребляю им, просто любопытно, почему он не работает. –
Не _might be_, это __is__ против их ToS. И они предпринимают активные меры против него, так что уже может быть, почему он «не работает». // Если вы хотите что-либо сделать «на» Facebook, используйте их API. – CBroe