Webtracker

Z Wiki - coigdzie.pl
Wersja z dnia 12:50, 27 kwi 2016 autorstwa Krzysiek (dyskusja | edycje) (Pierwsza wersja)
Przejdź do nawigacji Przejdź do wyszukiwania

Webtracker to narzędzie napisane w języku PHP do wykrywania zmian na stronach WWW.

Skrypt tworzy plik xml z definicjami tasków 2 typów:

  • zmiana na stronie (zmiany w treści strony lub znalezione nowe podstrony)
  • błędy podczas pobierania stron

Skrypty

Na Webtracker składa się 7 plików:

  • DataSource.php
  • FineDiff.php
  • Keywords.php
  • KLogger.php
  • SiteComparator.php
  • Webtracker.php
  • XMLFileWriter.php

DataSource zawiera konfigurację dostępu do bazy danych oraz zapytania SQL pobierające strony do przeskanowania.

Keywords to lista słów kluczowych, które powodują uznanie zmiany bądź odnośnika za wartościowego dla nas.

KLogger zawiera definicję klasy logującej.

FineDiff zawiera definicję klasy analizującej zmiany na stronie w stosunku do zapisanej kopii. Kod pochodzi ze strony http://www.raymondhill.net/finediff/.

Opisy pozostałych 3 najważniejszych skryptów znajdują się poniżej.

Webtracker

Jest to startowy skrypt, który pełni role kontrolera. Uruchamiany z jednym argumentem - nazwą wynikowego pliku xml.

Program rozpoczyna działanie od pobrania z bazy danych listy adresów do stron za pomocą zapytań zdefiniowanych w DataSource oraz usunięcia duplikatów i linków prowadzących do różnych podstron tej samej domeny. Następnie dla każdej strony, uruchamiany jest SiteComparator, którego wynik jest przekazywany do XMLFileWritera.

Po przeskanowaniu wszystkich stron, wywoływana jest metoda klasy XMLFileWriter, która zapisuje kolekcję zmian do pliku xml w postaci listy tasków.

SiteComparator

Klasa zajmuje się przeskanowaniem strony wraz z podstronami (do zadanej głębokości) oraz wyszukaniem zmian w stosunku do kopii zapisanej na dysku podczas ostatniego skanowania.

Skrypt pobiera stronę główną oraz znalezione wartościowe podstrony (posiadające w linku lub w nazwie odnośnika przynajmniej jedno słowo kluczowe zdefiniowane w Keywords) z użyciem biblioteki curl. Do oczyszczenia tekstu z kodu html używany jest lynx. Oczyszczona lista stron jest przetwarzana z użyciem FineDiffa w celu odszukania istotnych zmian (także biorąc pod uwagę słowa kluczowe).

XMLFileWriter

Klasa służy do budowania dokumentu xml oraz do zapisania jego do pliku.

Skrypt zbiera 2 rodzaje zadań: zmiany na stronie oraz błędy. Każde zadanie posiada następujące pola:

  • id obiektu (źródło, band)
  • typ obiektu (SOURCE, BAND)
  • wiadomość

Jeżeli wiadomość jest dłuższa niż 200 znaków, pozostała część jest obcinana, a na koniec dodawany jest wielokropek.

Wiadomości dotyczące zmian na stronie posiadają informację o liczbie zmian, a każda zmiana poprzedzona jest informacją jakie słowo kluczowe zdecydowało o uznaniu zmiany za ważną.