Перейти к содержанию

Websitewatcher - программа для мониторинга Интернет


Рекомендуемые сообщения

я решил перенести сюда обсуждение WSW, так как оно затянулось и стало самодостаточным

 

-------------

 

Кстати, я был неправ насчет того, что одна закладка =одна страница. В WSW есть возможность в "Дополнительно/Отслеживание ссылок"

автоматического добавления закладок, найденных по ссылкам с корневой страницы.

Можно задать глубину обхода, строки (регулярные выражения), наличие которых в URL блокирует их загрузку или наоборот разрешает ее.

Плюс можно выкусывать динамический идентификатор сессии из URL, чтобы не плодить новые закладки.

Правда, тогда технология работы становится немного интересной - надо делать специальный файл закладок только с корневыми страницами и использовать его как шаблон -открывать для работы пустой файл закладок, импортировать туда базовые закладки и каждый день(?) или обход страниц использовать новый файл (чтобы старые ссылки не мешались) .

С помощью языка скриптов все это просто.

 

The Follow-Links feature lets you monitor a whole site instead of single pages. For the Follow-Links feature you have to enter a start page which is also called Master-Bookmark. All links in the checked pages are inserted as new bookmarks automatically. The Follow-Links configuration must only be made in the Master-Bookmark, all automatically inserted bookmarks will use the configuration from the Master-Bookmark.

 

It's recommended to put each Master-Bookmark into a separate folder!

 

 

 

Link depth

The link depth defines the depth that WebSite-Watcher should follow. A link depth of 1 means that WebSite-Watcher will follow only links from the current page. With a link depth of 2 WebSite-Watcher will also follow links from linked pages, etc...

 

 

Copy all bookmark properties when inserting new bookmarks

By default (without that option) only the most important bookmark properties are copied to new, inserted bookmarks. If this option is enabled, nearly all bookmark properties from the source bookmark are used in the new, inserted bookmarks.

 

 

Don't follow links which contain one of the following strings

With this setting, new bookmarks will NOT be inserted if the link address contains one of the entered strings. Enter one string per line, all strings are case insensitive. The entered strings are "sub-strings", Wildcards or Regular Expressions are not supported.

 

Examples are:

.zip

.exe

.pdf

/adv/

 

 

Only follow links which contain one of the following strings

With this setting, new bookmarks will only be inserted if the link address contains one of the entered strings. Enter one string per line, all strings are case insensitive. The entered strings are "sub-strings", Wildcards or Regular Expressions are not supported.

 

Examples are:

techinfo

forum_data

 

 

Advanced / Ignore parts from an URL when checking if an URL already exists

If an URL contains a changing Session-ID it will be inserted each time you check the site. To prevent that behavior, you can define regular expressions to exclude parts of an URL when WebSite-Watcher checks if a bookmark already exists. Enter one regular expression per line.

 

Examples are:

?.* - filters everything after the question mark

&s=.*?& - filters the parameter &s= until the next ampersand, for example &s=hasdqwe79a8sd798&

&sid=[a-z|1-9]* - filters a session id with characters a-z and digits

Ссылка на комментарий
Поделиться на другие сайты

  • Ответов 47
  • Создана
  • Последний ответ
я решил перенести сюда обсуждение WSW, так как оно затянулось и стало самодостаточным

 

-------------

 

Кстати, я был неправ насчет того, что одна закладка =одна страница. В WSW есть возможность в "Дополнительно/Отслеживание ссылок"

автоматического добавления закладок, найденных по ссылкам с корневой страницы.

Можно задать глубину обхода, строки (регулярные выражения), наличие которых в URL блокирует их загрузку или наоборот разрешает ее.

Плюс можно выкусывать динамический идентификатор сессии из URL, чтобы не плодить новые закладки.

Правда, тогда технология работы становится немного интересной - надо делать специальный файл закладок только с корневыми страницами и использовать его как шаблон -открывать для работы пустой файл закладок, импортировать туда базовые закладки и каждый день(?) или обход страниц использовать новый файл (чтобы старые ссылки не мешались) .

С помощью языка скриптов все это просто.

 

:smile1: Здесь так здесь - тогда ту ветку грохну.

 

Только все равно не понял как это делать :(

Ссылка на комментарий
Поделиться на другие сайты

:smile1: Здесь так здесь - тогда ту ветку грохну.

 

Только все равно не понял как это делать :(

1)создается новый файл с базовыми букмарками, для которых включены опции автодобавления новых букмарков по найденным на базовой странице ссылкам плюс возможно понадобится создать пустой файл букмарков.

2)пишется скрипт примерно такого содержания (wsw работает с пустым файлом букмарков с помощью параметра командной строки и каждый раз его нужно копировать под другим именем)

-ImportBookmarks /WSW...

-CheckBookmarks /all

 

Попробовать не могу - у меня нелицензионная версия (только один файл разрешен :smile2: )

 

 

 

Ссылка на комментарий
Поделиться на другие сайты

1)создается новый файл с базовыми букмарками, для которых включены опции автодобавления новых букмарков по найденным на базовой странице ссылкам плюс возможно понадобится создать пустой файл букмарков.

2)пишется скрипт примерно такого содержания (wsw работает с пустым файлом букмарков с помощью параметра командной строки и каждый раз его нужно копировать под другим именем)

-ImportBookmarks /WSW...

-CheckBookmarks /all

 

Попробовать не могу - у меня нелицензионная версия (только один файл разрешен :smile2: )

 

Так блин.

Давай на уровень ниже - для особо одаренных.

Что такое БУКМАРК и где его искать и как его создать?

Куда пишется скрипт, как пишется?

Ссылка на комментарий
Поделиться на другие сайты

Что такое БУКМАРК

Букмарк - это "Закладка". Та строчка, которая, собственно, и мониторится на предмет изменений.

 

А вот "как написать скрипт" - это, я боюсь, очень сложный вопрос.

но послушаем Vinni, конечно.

Ссылка на комментарий
Поделиться на другие сайты

Букмарк - это "Закладка". Та строчка, которая, собственно, и мониторится на предмет изменений.

 

А вот "как написать скрипт" - это, я боюсь, очень сложный вопрос.

но послушаем Vinni, конечно.

 

Итак, начинаем :smile7:

 

Задача 1. Сохранить не только последнюю и предпоследнюю версии контролируемой веб-страницы (закладки, букмарка, bookmark :smile1: ), но и все предыдущие в отдельных файлах.

 

Формат хранения информации в архиве

-для каждой закладки создается отдельная директория с именем, соответствующим имени закладки в WSW, в которой для каждой версии веб-страницы хранится два файла со следующими именами, основанными на дате-времени создания данной версии веб-страницы (например, 200805061645 - 2008 год, месяц - 05, день - 06, час - 16, минуты - 45)

-дата_время_создания-версии.html - HTML-версия страницы

-дата_время_создания-версииchg.html - HTML-версия страницы, в которой желтым цветом выделены изменения в данной версии по сравнению с предыдущей

-для получения информации о том, какой директории какой URL соответствует, создается конфигурационный текстовый файл следующего формата (одна строка - одна закладка)

- имя (из свойств закладки в WSW) (например, Yandex) - это имя поддиректории в архиве!

- URL (например, http://www.yandex.ru)

-дата-время последнего обновления страницы в том же формате (например, 200805061645)

 

 

Для поиска информации по рубрикам предлагаю использовать Yandex Desktop Search - можно запланировать разработку другого скрипта для автоматизации создания списка страниц по той или иной рубрике, заданной поисковым запросом в YDS. :smile3:

 

ЧАСТЬ 1.

 

Решение:

1) установить интерпретатор языка Perl и указать при установке, чтобы была создана файловая ассоциация для расширения .pl (чтобы при открытии такого файла запускался интерпретатор Perl и выполнял скрипт в этом файле)

 

2) поместить все закладки, для которых нужно сохранять историю в специально созданную для этого папку (folder) в WSW (в моем случае - WebSite-Watcher)

 

3) создать специальную директорию на диске, где будут размещены скрипты и результаты их работы (в моем случае - d:\wsw) и поддиректории

arc - для хранения веб-страниц (в ней создать пустой файл url.info для хранения конфигурационной информации)

rep - для хранения созданных отчетов WSW

 

4) так как информация об изменениях в страницах будет получаться от WSW с помощью встроенных в него отчетов(report), то нужно в этой директории создать файл с отчетом следующего содержания (важно, чтобы он имел ровно три строки, так как скрипт рассчитывает на это!)

{wsw_dateformat(yyyymmddhhnn)}{wsw_report_date}

{wsw_begin_url}"{wsw_url_name}","{wsw_url_url}","{wsw_url_date_changed}","{wsw_url_path_filename}","{wsw_url_path_filename_chg}"

{wsw_end_url}

Директива {wsw_dateformat(yyyymmddhhnn)} задает форматы даты в отчете (значение в этом формате служит основой при формировании имени файла с версией веб-страницы! ), а {wsw_report_date} выводит в отчет текущую дату время.

Далее между {wsw_begin_url} и {wsw_end_url} помещено описание формата, в котором будет выведена информация о каждой измененной закладке (каждое поле заключается в кавычки и разделяется запятыми)

{wsw_url_name} - имя закладки из ее свойств в WSW

{wsw_url_url} - URL закладки (или поисковый запрос)

{wsw_url_date_changed} - дата-время последнего изменения страницы

{wsw_url_path_filename} - полный путь к файлу с последней версией страницы в хранилище страниц WSW

{wsw_url_path_filename_chg} - полный путь к файлу с последней версией страницы с подсвеченными изменениями в хранилище страниц WSW

 

5) создать следующий скрипт WSW и поместить его в файл с именем save_history.wws

CheckFolder "WebSite-Watcher" /subfolder

if GetUpdatedBookmarkCount=0 then goto NoUpdates

$filename = GetDateTime("yyyymmddhhnn")

$filename = "d:\wsw\rep\" + $filename

CreateReport /template="d:\wsw\report.template" /output="{$filename}" /bookmarks=changed

RunProgram "d:\wsw\save.pl" /parameter="{$filename}"

Label NoUpdates

Quit

 

>CheckFolder "WebSite-Watcher" /subfolder

проверить закладки в папке WebSite-Watcher со всеми ее подпапками (/subfolder )

>if GetUpdatedBookmarkCount=0 then goto NoUpdates

если изменений в закладках нет - прекратить работу

> $filename = GetDateTime("yyyymmddhhnn")

> $filename = "d:\wsw\rep\" + $filename

иначе сформировать имя файла, в котором будет храниться отчет об изменениях в страницах

>CreateReport /template="d:\wsw\report.template" /output="{$filename}" /bookmarks=changed

создать отчет по шаблону в "d:\wsw\report.template", вывести в него информацию только об изменившихся закладках (/bookmarks=changed)

>RunProgram "d:\wsw\save.pl" /parameter="{$filename}"

запустить внешнюю программу на Perl для анализа отчета и переноса текущих версий закладок в новый архив

>Label NoUpdates

>Quit

прекратить работу WSW

 

Запускать этот скрипта нужно командой

"C:\Program Files\WebSite-Watcher\wswatch.exe" /SCRIPT="d:\wsw\save_history.wws"

 

 

Ссылка на комментарий
Поделиться на другие сайты

ЧАСТЬ 2

 

Для удобства я собрал все файлы в архиве, приложенном к сообщению - надо распаковать его в директорию d:\wsw

 

Скрипт на Perl

 

#!/usr/bin/perl -w

use strict;

my $ARC_DIR='d:/wsw/arc/';

my $urlfile=$ARC_DIR."url.info";

my %uinfo=(); my %uchanged=();

 

if ($ARGV[0] ne "") {

my $fname=$ARGV[0];

&load_urls($urlfile);

&load_report($fname);

&save_urls($urlfile);

}

exit(0);

sub load_urls {

my ($uname)=@_;

open(U,$uname);

while (<U>) {

chomp;

my @ulist=split(/\t/);

next if $ulist[0] eq "" || $ulist[1] eq "";

$uinfo{$ulist[1]}=$ulist[0];

$uchanged{$ulist[1]}=$ulist[2];

}

close(U);

}

sub save_urls {

my ($uname)=@_;

open(U,">$uname");

for my $url (keys %uinfo) {

next if $url eq "";

print U $uinfo{$url},"\t",$url,"\t",$uchanged{$url},"\n";

}

close(U);

}

 

sub load_report {

my ($repname)=@_;

open(R,$repname);

my $rdatetime=<R>;

while (<R>) {

chomp;

my $rstr=$_;

if ($rstr=~/^\"(.*)\",\"(.*)\",\"(.*)\",\"(.*)\",\"(.*)\"$/) {

my $urlname=$1;my $url=$2;my $urlchg=$3; my $fpname=$4; my $fpchgname=$5;

next if $uchanged{$url} eq $urlchg;

$uinfo{$url}=$urlname; $uchanged{$url}=$urlchg;

my $save_dir=$ARC_DIR.$urlname;

if (!(-e $save_dir)) {

mkdir($save_dir);

}

$fpname=~/^file:\/\/(.+)$/;$fpname=$1;

open(F,$fpname);my @newpage=<F>;close(F);

my $foutname=$save_dir."/".$urlchg.".html";

open(P,">$foutname");print P @newpage;close(P);

$fpchgname=~/^file:\/\/(.+)$/;$fpchgname=$1;

open(F,$fpchgname);my @newchgpage=<F>;close(F);

my $foutchgname=$save_dir."/".$urlchg."chg.html";

open(P,">$foutchgname");print P @newchgpage;close(P);

}

}

close ®;

}

 

и комментарии к нему

 

>my $ARC_DIR='d:/wsw/arc/';

имя директории, где хранится архив

>my $urlfile=$ARC_DIR."url.info";

имя файла, где хранится соответствие между именами закладок и их URL

>my %uinfo=(); my %uchanged=();

инициализация хэш-массивов

 

>if ($ARGV[0] ne "") {

> my $fname=$ARGV[0];

имя файла с отчетом WSW передается первым параметром командной строки

>&load_urls($urlfile);

вызов процедуры загрузки конфиг. файла

>&load_report($fname);

анализ файла с отчетом и добавление новых версий страниц в архив

>&save_urls($urlfile);

сохранение новой версии конфиг. файла

>}

>exit(0);

конец программы

 

>sub load_urls {

> my ($uname)=@_;

имя конфиг. файла передается параметром процедуре

> open(U,$uname);

открываем файл

> while (<U>) {

в цикле читаем все строки

> chomp;

удаляем символ переноса строки

> my @ulist=split(/\t/);

разбиваем строку на части с помощью разделителя (символа табуляции - \t)

формат строки

-название закладки

-URL

-дата-время последнего изменения

> next if $ulist[0] eq "" || $ulist[1] eq "";

проверка на корректность данных в строке

> $uinfo{$ulist[1]}=$ulist[0];

сохраняем информацию в хэш-массивах.

uinfo - хранит соответствие между URL и именем закладки

> $uchanged{$ulist[1]}=$ulist[2];

uchanged - хранит соответствие между URL и датой-временем последнего обновления закладки

> }

> close(U);

закрываем файл и выходим из процедуры

>}

>sub save_urls {

> my ($uname)=@_;

имя конфиг. файла передается параметром процедуре

> open(U,">$uname");

открываем файл для записи (старое содержимое уничтожается)

> for my $url (keys %uinfo) {

> next if $url eq "";

> print U $uinfo{$url},"\t",$url,"\t",$uchanged{$url},"\n";

сохраняем в цикле информациб о каждой закладке в отдельной строке конфиг. файла

> }

> close(U);

закрываем файл и выходим из процедуры

>}

 

>sub load_report {

> my ($repname)=@_;

имя файла с отчетом передается параметром процедуре

> open(R,$repname);

открываем файл

> my $rdatetime=<R>;

читаем первую строку - там дат-время создания отчета (пока не нужно - может быть пригодится в будущем)

> while (<R>) {

в цикле читаем все строки отчета. каждая строка содержит информацию об отдельной закладке

> chomp;

> my $rstr=$_;

сохраняем строку в переменной $rstr

> if ($rstr=~/^\"(.*)\",\"(.*)\",\"(.*)\",\"(.*)\",\"(.*)\"$/) {

выделяем с помощью регулярного выражения отдельные поля строки (сохраняются как переменные $1..$5)

> my $urlname=$1;my $url=$2;my $urlchg=$3; my $fpname=$4; my $fpchgname=$5;

сохраняем поля строки отчета в рабочих переменных

> next if $uchanged{$url} eq $urlchg;

если закладка не обновлялась (время последнего изменения из конфиг. файла совпадает со временем обновления из отчета) больше ничего не делаем и переходим на обработку следующей строки отчета

> $uinfo{$url}=$urlname; $uchanged{$url}=$urlchg;

сохраняем информацию о закладке в хэш-массивах

> my $save_dir=$ARC_DIR.$urlname;

формируем имя поддиректории, куда будут сохраняться веб-страницы

> if (!(-e $save_dir)) {

> mkdir($save_dir);

если ее нет, создаем ее

> }

> $fpname=~/^file:\/\/(.+)$/;$fpname=$1;

получаем с помощью регулярного выражения имя файла (WSW указывает имена в формате URL с префиксом file://)

> open(F,$fpname);my @newpage=<F>;close(F);

читаем содержимое страницы в список @newpage

> my $foutname=$save_dir."/".$urlchg.".html";

формируем имя файла в архиве, куда будет сохранено содержимое веб-страницы

> open(P,">$foutname");print P @newpage;close(P);

сохраняем содержимое веб-страницы в этот файл

> $fpchgname=~/^file:\/\/(.+)$/;$fpchgname=$1;

получаем с помощью регулярного выражения имя файла для страницы с показом изменений(WSW указывает имена в формате URL с префиксом file://)

> open(F,$fpchgname);my @newchgpage=<F>;close(F);

читаем содержимое страницы в список @newchgpage

> my $foutchgname=$save_dir."/".$urlchg."chg.html";

формируем имя файла в архиве, куда будет сохранено содержимое веб-страницы

> open(P,">$foutchgname");print P @newchgpage;close(P);

сохраняем содержимое веб-страницы в этот файл

> }

> }

> close®;

>}

 

wsw.zip

Ссылка на комментарий
Поделиться на другие сайты

М-да...

Сначала я хотел просто констатировать свою неспособность использовать прочитанное.

 

А потом подумал, что, возможно, со скриншотами и будет понятнее. Можно попросить, уважаемый Vinni, сделать скриншоты и прислать их мне по электронной почте? Я на своем сайте из их и ваших двух постов сделаю страницу, гда оформлю этот текст с картинками в виде понятной для неопытных пользователей инструкции. Потом уточню непонятные вопросы и после этого возможно, будет понятнее, что с этим делать . Куда, скажем так, конкретно втыкать написанное. Такой вариант приемлем?

 

Конечно, может быть, это просто я такой непонятливый, но боюсь, что многие, как и я, в скриптах вообще ничего не понимают.

Ссылка на комментарий
Поделиться на другие сайты

М-да...

Сначала я хотел просто констатировать свою неспособность использовать прочитанное.

 

А потом подумал, что, возможно, со скриншотами и будет понятнее. Можно попросить, уважаемый Vinni, сделать скриншоты и прислать их мне по электронной почте? Я на своем сайте из их и ваших двух постов сделаю страницу, гда оформлю этот текст с картинками в виде понятной для неопытных пользователей инструкции. Потом уточню непонятные вопросы и после этого возможно, будет понятнее, что с этим делать . Куда, скажем так, конкретно втыкать написанное. Такой вариант приемлем?

 

Конечно, может быть, это просто я такой непонятливый, но боюсь, что многие, как и я, в скриптах вообще ничего не понимают.

Господи, а как же питона прикармливать собирались все? :smile2:

Скриншоты сделаю завтра, а пока попробую в армейском :smile5: стиле, а вы говорите, на каком шаге пошли проблемы.

 

1. Скачать и установить Perl c http://www.activestate.com/Products/activeperl/

2. Скачать и установить WebSiteWatcher

2. Скачать архив из предыдущего поста и развернуть его содержимое в директорию d:\wsw

3. Запустить WSW и создать в нем папку(folder) с именем WebSite-Watcher (если ее нет)

4. Добавить в папку закладку с именем Yandex и URL http://www.yandex.ru

5. Добавить в папку закладку с именем RBC и URL http://www.rbc.ru

6. Завершить WSW

7. Запустить файл d:\wsw\wsw.bat

8. Посмотреть содержимое поддиректорий в d:\wsw\arc - там появятся новые файлы с веб-страницами

Повторять шаги 7 и 8 несколько раз с интервалом не менее минуты.

 

Про автоматизацию запуска wsw.bat рассказать? :smile19:

 

 

Ссылка на комментарий
Поделиться на другие сайты

Господи, а как же питона прикармливать собирались все? :smile2:

Скриншоты сделаю завтра, а пока попробую в армейском :smile5: стиле, а вы говорите, на каком шаге пошли проблемы.

.....

Про автоматизацию запуска wsw.bat рассказать? :smile19:

:smile12: Он еще и издевается.... - не прикрмился Питон. Вообще дикие звери плохо поддаются одомашниванию :smile6: Особенно когда опыта нет.

Ссылка на комментарий
Поделиться на другие сайты

Заархивировано

Эта тема находится в архиве и закрыта для дальнейших ответов.


×
×
  • Создать...