| Debug |
Off=0 en On=1 |
Met debug=1 wordt
extra veel output tijdens de download gegenereerd. Mogelijke fouten
worden zo eenvoudiger onderkend. |
| html |
Off=0 en On=1 |
Met html=1 wordt de
uitvoer van het programma als html-code verpakt en kan het programma
als zodanig als cgi-script gestart worden. |
| search_engine_name |
Dit is
de naam van het programma zoals dat aan de te onderzoeken site wordt
doorgegeven. |
| email |
Tijdens
de zoekaktie wordt het e-mailadres aan de te onderzoeken site
doorgegeven. |
| root |
Dit is
de root van de te onderzoeken site. De waarde mag subdirectories
bevatten. Files hoger in het path worden niet gedownload.
De variabele mag geen file-naam bevatten.
Voorbeelden: 'http://www.ub.rug.nl/' of 'http://www.bibliothek.uni-regensburg.de/ezeit/' |
| first_files |
Indien
niet van de default-file gebruik wordt gemaakt dient de variabele
een of meer file-namen te bevatten. Het ';'-teken dient als
onderscheidingsteken.
Met default-file wordt de file bedoeld die de webserver standaard
stuurt als de URL alleen een path bevat, bijv:
'http://www.ub.rug.nl/'
en niet
'http://www.ub.rug.nl/index.html' |
| save_files_in |
De
waarde hiervan geeft de path waar de files worden opgeslagen |
| how_deep_will_we_go |
De
waarde geeft de maximale diepte in aantallen subdirectories van de
te downloaden files. Dit voorkomt dat foutieve links kunnen leiden
tot een oneindig aantal subdirectories |
| filename_for_no_filename |
Indien
een link geen file-naam bevat maar bijv. alleen bestaat uit een path
van directories dan wordt aan deze file deze naam gegeven |
| do_not_search_extensions |
Files
met extensies die in deze lijst voorkomen worden niet onderzocht op
links.
Het onderscheidingsteken is ';' |
| do_not_download_extensions |
Files
met extensies die in deze lijst voorkomen worden niet gedownload.
Het onderscheidingsteken is ';' |
| not_allowed_tags |
Tags met
namen zoals in deze lijst worden niet op links onderzocht.
Het onderscheidingsteken is ';' |
| max_file_size |
Files
groter dan hier aangegeven worden niet gedownload.
Een 'K' wordt vervangen door '000' en een 'M' door '000000' |
| max_filename_size |
Files
met namen die meer tekens bevatten dan deze waarde worden niet
gedownload.
Dit voorkomt dat een foutieve link kan leiden tot file-namen van
oneindige lengte |
| search_tags |
Dit is
een lijst van combinaties van tags en de naam van de link. Een
voorbeeld is de 'a'-tag in combinatie met de waarde van 'href'.
Het onderscheidingsteken is ';'.
Tag en variabele-naam worden gescheiden door een ',' |
| save_extensions_in |
In deze
file worden alle gebruikte file-extensies opgelagen plus de files
waarin deze extensies worden gebruikt.
Subdirectories zijn toegestaan |
| save_links_in |
In deze
file worden alle links opgeslagen.
Subdirectories zijn toegestaan |
| save_local_links_in |
De files
die lokaal worden opgeslagen kunnen een andere naam toegewezen
krijgen. Die namen en hun orgineel staan in deze file. De n-de
file-naam uit "save_links_in" staat in relatie met de n-de
file-naam in "save_local_links_in".
Subdirectories zijn toegestaan |
| save_deadlinks_in |
Links
die niet wijzen naar een file op de server worden in deze file
opgeslagen.
Subdirectories zijn toegestaan |
| save_not_searched_extensions_in |
Extensies
van files die niet worden geprocessed worden hierin opgeslagen.
Subdirectories zijn toegestaan |
| save_not_searched_tags_in |
Tags die
niet op links worden onderzocht worden in deze file opgeslagen.
Subdirectories zijn toegestaan |
| save_to_long_filenames_in |
File-namen
die te lang zijn worden in deze file opgeslagen.
Subdirectories zijn toegestaan |
In regel 1 staat het path aangegeven van het programma "perl".
Dit path wordt alleen in UNIX gebruikt. Eventuele opties zoals '-w' worden
in alle operating-systemen meegenomen.
6: use LWP::UserAgent
The LWP::UserAgent is a class implementing a simple World-Wide Web
user agent in Perl. It brings together the HTTP::Request, HTTP::Response
and the LWP::Protocol classes that form the rest of the core of
libwww-perl library. For simple uses this class can be used directly
to dispatch WWW requests, alternatively it can be subclassed for
application-specific behaviour.
7. use HTML::LinkExtor
HTML::LinkExtor is an HTML parser that extracts links from an HTML
document. The HTML::LinkExtor is a subclass of HTML::Parser. This means
that the document should be given to the parser by calling the $p->parse()
or $p->parse_file() methods.
8. use URI
This module implements the URI class. Objects of this class
represent ``Uniform Resource Identifier references'' as specified in RFC
2396
9. use File::Basename
These routines allow you to parse file specifications into useful
pieces using the syntax of different operating systems.
10. use File::Path
Create or remove directory trees
62. sub print_array
Print een array. Deze routine wordt voor debug-doeleinden gebruikt.
71. sub print_hash
Print een hash. Deze routine wordt voor debug-doeleinden gebruikt.
82. sub print_links
Print url's. Deze routine wordt voor debug-doeleinden gebruikt.
98. sub print_header
Routine om een HTML-header te printen.
111.
sub print_tai
Print de HTML-tail.
119. sub read_inifile
Lees de ini-file.
161. sub ini_globals
Ken de waarden uit de ini-file toe aan de globale variabelen.
223. sub create_paths
Creëert alle directories. Maakt gebruik van "@g_wfiles".
232. sub open_and_close_all_files_for_writing
Opent alle files om te schrijven en sluit deze weer.
242. sub ini_hrefs
Alle files die als eerste moeten worden gedownload (0 of meer)
worden in '@g_hrefs' en '%g_hrefs' gezet. De namen van deze files komen
uit de ini-file en uit "sitemap.txt".
269. sub read_do_not_process
Alle files met de naam uit de file "do_not_process.txt"
worden niet gedownload en ge'proccessed'.
289. ############### MAIN
Hier begint het hoofdprogramma.
306. my $number= 0; # Paginanummer
Voor elke nieuw onderzochte link wordt '$number' met 1 verhoogd.
307. my $ua = new LWP::UserAgent
De class van de zoekmachine.
312. my $parser= HTML::LinkExtor->new( )
De parser.
344.
while( $number <= $#g_hrefs) # @g_hrefs grows while searching
De zoekaktie gaat door totdat '$number' groter is dan het aantal
links in de array. De array groeit tijdens de zoekaktie totdat alle
links gevonden zijn.
359. $filename=~ s/([^a-zA-Z0-9\-\_\.])/sprintf( '%%%02X', ord($1))/eg
Niet alle leestekens zijn toegestaan als filenaam. Alle bijzondere
tekens worden in hun hexadecimale waarde vertaald, voorafgegaan door een
'%'-teken.
365. my @newhrefs; # clear array
366. my @newtags; # clear array
Alle nieuwe links en tags uit een pagina komen in deze array.
368. $res = $ua->request(HTTP::Request->new(GET => $url))
Haal de pagina op.
393. $full_filename= $g_save_files_in. $dir. $filename
Bewaar de file op disk.

402. {
Zoek alle tags met de links (@newhrefs) in de pagina.
439. }
443. ##### search for new ref's
Zoek naar nieuwe links.
449. if( $href=~ s/^$g_root//i)
Alleen links in de root.
451. if( !( $href=~ /^mailto:/i))
Geen Mail-adressen
498. if( ( !$g_do_not_search_extensions{ $ext} or !$ext)
Met de juiste extensie
529. }
532. for( $i= 0; $i<= $#newtags; $i++)
Zoek naar links om te downloaden.
544.}
545. # search for extra download
Zoek in de pagina's naar extra links die buiten de tags vallen.

573. }
574. $i= 0;
Doe de eigenlijke download.
701. }
703. else ## if $res->{ "_msg"} ne "OK"
Wat te doen als de download niet is gelukt.
705. # Na 60x "Can't connect" de volgende.
Zestig keer wordt getracht een nieuwe verbinding met de server te
leggen als dat eerder niet lukte.
726. }
KLAAR
727. if( %g_deadlinks)
Schrijf alle foute links en de pagina's waarin die links voorkomen
in een file.
758. if( %g_not_searched_tags)
Schrijf alle tags en de pagina's waarin die tags voorkomen die niet
zijn onderzocht in een file.
783. if( %g_not_searched_extensions)
Schrijf alle extensies en de pagina's waarin die extensies voorkomen
in een file die niet zijn onderzocht.
804. if( %g_extensions)
Schrijf alle extensies in een file.
