Логин и парсер Яндекс.Вебмастера

Волею судеб захотелось отфильтровать в одном дампе индексат от неиндексата — полез в Яндекс.Вебмастер.

Ну, сразу перейду к расстройству что даже в Я.Вебмастер показывается только первая 1000 проиндексированных страниц — но парсер уже был готов, допиливать его не стал.

С использованием Jum::Web::Crawler — функцию под него я уже постил

use strict;
use Jum::Web::Crawler;

my $login = q[];
my $password = q[];
my $cookie_file = q[./yandex.cookie];

print qq[Enter site ID: ];
my $site_id = <STDIN>;
chop $site_id;
print $site_id." in process..\n";

my $webmaster_href = q[http://webmaster.yandex.ru/site/indexed-pages.xml?host=%d&path=*&page_num=%d];
my $auth_href = q[https://passport.yandex.ru/passport?mode=auth];
my $post_data = q[display=page];
$post_data .= q[&from=passport];
$post_data .= q[&idkey=%s];
$post_data .= q[&retpath=http://webmaster.yandex.ru];
$post_data .= q[&login=]$login;
$post_data .= q[&passwd=].$password;
$post_data .= q[&twoweeks=yes];
$post_data .= q[×tamp=].time().q[520];

my $login_data = Jum::Web::Crawler::getURL({href=>$auth_href, cookie_file=>$cookie_file});
my $idkey = $1 if $login_data->{content} =~ /"idkey" value="([^"]+)/;

$post_data = sprintf($post_data, $idkey);

$login_data = Jum::Web::Crawler::getURL({
href => $auth_href,
post => $post_data,
cookie_file => $cookie_file,
referer => $auth_href
});

if($login_data->{content} =~ /Refresh" content="0;/){
print qq[Success!\n];
}

my $i = 0;
open F,">".$site_id.".links";
while(1){
my $href = sprintf($webmaster_href, $site_id, $i);
print qq[Getting $href ...\n];
$i++;
my $content = Jum::Web::Crawler::getURL({href=>$href, cookie_file=>$cookie_file});
while($content->{content} =~ /target="_blank" href="([^"]+)/isg){
my $found_href = $1;
print "\t".$found_href."\n";
print F $found_href;
}
# Цикл бесконечный - имейте в виду. Надо останавливать когда дошли до конца.
}
close F;

Одно расстройство с этой 1000 страниц. Прицельно бить Яндекс очень не хочется.

Комментировать

Войдите чтобы оставить комментарий.