HPUNIX Сайт о ОС и не только!

Набор скриптов для анализа веб-сайта

3 марта 2011 - unix
Набор скриптов для анализа сайта

Решил поделиться своими старенькими наработками, которые я использовал около года вспять на одном из собственных блогов. Архив со всеми скриптами находится тут. Дальше по тексту я кратко расскажу о его содержимом.

После распаковки архива вы увидите три каталога.

1. Каталог ./counter

Содержит скрипты на Perl, созданные для сотворения картинки-информера. Основной скрипт тут — это cnt.pl.

#!/usr/bin/perl

use GD;
use strict;

# cnt.pl
# (c) Alexandr A Alexeev 2009, http://eax.me/

my $png = shift;
my $log = shift;

unless($png && $log) {
print "usage: $0 outfile.png stat.log\n";
  exit 1;
}

chomp(my $rss = `./feedburner-grab.pl web20su`);
if($?) {
  print "feedburner-grab returns $?\n";
  exit 3;
}

#chomp(my $email = `./subscribe-grab.pl inet.thoughts.web20su`);
chomp(my $email = `./feedburner-grab.pl web20su_email`);
if($?) {
  print "email-grab returns $?\n";
  exit 4;
}

chomp(my $lj = `./livejournal-grab.pl web20su.livejournal.com`);
if($?) {
  print "livejournal-grab returns $?\n";
  exit 5;
}

chomp(my $twitter = `./twitter-grab.pl web20su`);
if($?) {
  print "twitter-grab returns $?\n";
  exit 6;
}

my $none = "---split---";

chomp(my $pr = `./google-grab.pl web20.su`);
if($?) {
  print "google-grab returns $?\n";
  exit 7;
}

chomp(my $ya = `./yandex-grab.pl web20.su`);
if($?) {
  print "yandex-grab returns $?\n";
  exit 8;
}

open LOG, ">>$log" or die "Failed to open $log\n";
chomp(my $date = `date "+%Y-%m-%d"`);
print LOG "date=$date:rss=$rss:email=$email:lj=$lj:".
          "twitter=$twitter:pr=$pr:ya=$ya\n";
close LOG;

my $im = new GD::Image("template.png");
my $top = 3;

foreach my $i ($rss, $email, $lj, $twitter, $none, $pr, $ya) {
  if($i ne "---split---") {
    $im->line(84-6*length($i), $top+10, 87, $top+10, 0);
    $im->string(gdSmallFont, 84-6*length($i), $top, $i, 2);
    $top += 10;
  }
  $top += 6;
}

open PNG, ">$png" or die "Failed to open $png\n";
binmode PNG;
print PNG $im->png;
Набор скриптов для анализа сайта
close PNG;

Пример информера

При помощи скриптов *-grab.pl происходит определение числа rss-подписчиков на веб-сайт, количество друзей в Twitter и LiveJournal, также тИЦ и PR веб-сайта. Эти скрипты не особо достойные внимания — они просто загружают определенные интернет-страницы и обрабатывают их при помощи постоянных выражений.

Потом приобретенные числа подставляются в картинку-шаблон. Самое сложное тут — отыскать правильные координаты для вывода значений. Справа вы видите (никогда не угадаете!) пример информера.

Внимательный читатель спросит, а для чего cnt.pl пишет какие-то логи? Это изготовлено для того, чтоб позже можно было отследить динамику конфигурации числа подписчиков на веб-сайт. За построение соответственного графика отвечает скрипт graph.pl. Вот более увлекательная его часть:

my $graph = GD::Graph::lines->new(1000, 600);

$graph->set(
  x_label           => decode($cp, 'Дата'),
  y_label           => decode($cp, 'Кол-во'),
  title             => decode($cp, 'Число подписчиков'),
  y_max_value       => $max,
) or die $graph->error;

$graph->set_legend('RSS', 'E-Mail', 'LJ', 'Twitter');

my $gd = $graph->plot(\@data) or die $graph->error;

open(IMG, '>file.png') or die $!;
binmode IMG;
print IMG $gd->png;
close IMG;

my $msg = MIME::Lite->new(
  To => '[email protected]',
  Subject => 'Graph',
  Type => 'multipart/mixed');
Набор скриптов для анализа сайта

$msg->attach( Type => "text/plain; charset=$cp",
              Data => "Текст нашего письма. Картина прилагается." );
 
$msg->attach( Type        => 'image/png',
              Path        => 'file.png',
              Filename    => 'file.png',
              Disposition => 'attachment' );
 
$msg->send();

1-ая половина кода строит график (данные подгружаются из лог-файла), 2-ая половина шлет этот график веб-мастеру на e-mail. Осталось только прописать скрипт в crontab и ожидать каждодневных/недельных/месячных отчетов.

2. Каталог ./pages-count

Тут вы отыщите скрипты, созданные для определения числа страничек веб-сайта, проиндексированных разными поисковыми машинами — Yandex'ом, Рабмлером, Гугл, Bing и Яху. Для примера давайте возьмем Rambler:

#!/usr/bin/perl

# rambler-pages.pl
# (c) Две тыщи девять Alexandr A Alexeev, http://eax.me/

use strict;

my $url = shift;

unless($url) {
  print "usage: $0 example.ru\n";
  exit 1;
}

# urlencode
$url =~ s/([^a-zA-Z0-9\.\-\_]{1})/sprintf("%%%02x",ord($1))/eg;
$url = "http://nova.rambler.ru/srch\\?query=\\&limitcontext=0\\&filter=$url";

my $data = `wget -q $url -O -`;

if((!$data) or $?) {
  print "failed to download\n";
  exit 2;
}

my ($cnt) = $data =~ /(\d+)\)<\/a>(?:.{5}<span.+<\/span>)?<\/div><ul><li><a class\=\"title n_title_2\" href/;

unless($cnt) {
  print "failed to parse\n";
  exit 3;
}

print "$cnt\n";

Видите ли, ничего сверхъестественного. Особенного внимания в этом каталоге заслуживает скрипт yahoo-links.pl, который определяет число ссылок на веб-сайт, а не количество страничек в индексе. Самый «главный» скрипт в каталоге, all-pages.pl, определяет количество страничек веб-сайта в индексе всех поисковиков, нареченных выше.

3. Каталог ./visitors

Единственный скрипт в каталоге — cnt.php. Он предназначен для сбора инфы о гостях веб-сайта. Просто подключаем его во всех страничках при помощи include, и скрипт будет писать на диск логи вроде таких:

time=1251721248|ip=69.41.186.122|dn=example.ru|query=%2F|referer=| browser=DobroBot+%28%2Bhttp%3A%2F%2Fwww.dobrobot.com%2F%29 |uid=5838e4b8fa8f9c6ca16e0e7c7f1d5adc|

Для того, чтоб логи лучше воспринимались, требуется анализатор, до разработки которого у меня не дошли руки. Используйте этот скрипт только если перед вами стоит очень необыкновенная аналитическая задачка.

dx_vizitka.mp4

Если честно, с лету я не могу такую придумать и вообщем плохо помню, для чего это писалось. Не исключено, что просто от скукотищи.

4. Кому все это необходимо?

Данные скрипты можно использовать для сотворения собственной кнопки-информера, отображающей пузомерки веб-сайта, его посещаемость и другие характеристики. Можно сделать свой сервис анализа веб-сайтов типа pr-cy.ru.

Можно рассматривать соперников либо смотреть за своими веб-сайтами. Надеюсь, кому-нибудь они понадобятся.

Принципиально держать в голове, что писалось все это издавна и на скорою руку, поэтому в коде фактически нет комментариев, все это написано криво и местами может не работать либо работать не совершенно верно. Будьте бдительны.

Похожие статьи

  • YouTube View Восемь тыщ двести двенадцать скрипт для просмотра видео без Flash

    Мне не нравится Flash. Очень не нравится. Так как ничего полезного, не считая баннеров и игр, на нем не делают.

    Так как Adobe не волнуется о выпуске флэш-плагина для 64-х разрядных браузеров....

  • Тест производительности скриптов на Python

    Если вы издавна читаете мой блог, то сможете держать в голове, как несколько раз я гласил о Python различные противные вещи, мол он неспешный и памяти много ест. При всем этом даже приводились разные пруфлинки...

  • Cкрипт для скачки музыки из ВКонтакта

    В сети есть много сервисов для скачки mp3 из Вконтакта, но мне они не нравятся. К примеру, vMuke.ru нередко возвращает пустой итог, а MP3-Search.su повсевременно перегружен (и не так давно затребовал...

  • Как написать собственного паука

    В этой заметке вы отыщите мои эскизы поискового бота, другими словами набор скриптов, созданный для обхода сайтов… в каких-либо целях. Это может быть индексация страничек поисковой машиной, поиск к...

  • Используем Vim в качестве IDE для Erlang

    Вот уже более 3-х лет я пишу код только в vim. Не дано мне осознать, что всем так нравится в этих Emacs, Eclipse, IntelliJ IDEA и иных. Для чего они необходимы, если старенькый хороший vim (который, я...

Теги:
Рейтинг: +20 Голосов: 78 936 просмотров
Комментарии (0)

Нет комментариев. Ваш будет первым!

Найти на сайте: параметры поиска

Windows 7

Среда Windows 7 на первых порах кажется весьма непривычной для многих.

Windows 8

Если резюмировать все выступления Microsoft на конференции Build 2013.

Windows XP

Если Windows не может корректно завершить работу, в большинстве случаев это

Windows Vista

Если к вашему компьютеру подключено сразу несколько мониторов, и вы регулярно...