|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--java.lang.Thread | +--NavThread
Cette classe génère un processus qui se connecte aux pages HTML à visiter afin de les analyser et de rajouter ds la base de données du crawler tous les liens contenus ds ces pages.
Rem: Les processus engendrés par cette classe sont appelés 'processus de navigation'.
Field Summary | |
protected Pgsql |
bd
Objet permettant de communiquer avec la base de données du crawler. |
protected int |
BOUCLE_MAX
Nombre maximum de répétitions d'une requête avant que celle-ci ne soit considérée comme échouée. |
protected java.util.Properties[] |
dicos
Tableau de dictionnaires de mots à ignorer lors du parsage. |
protected boolean |
in_getPage
Drapeau signalant que le processus se trouve actuellement dans un appel à la méthode PageWeb getPage() de la classe WebFifo . |
protected int |
max_depth
Pour limiter la profondeur de recheche. |
protected java.io.PrintStream |
outLog
Flux d'entrée sur le fichier de journalisation. |
protected WebFifo |
pile_pages
Pile FIFO contenant les pages à visiter. |
protected boolean |
to_finish
Drapeau signalant que le processus doit s'arrêter. |
protected VerifThread |
verif_proc
Objet contenant le processus de vérification du crawler. |
Fields inherited from class java.lang.Thread |
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY |
Constructor Summary | |
NavThread(java.lang.String nom,
java.io.PrintStream outLog,
java.util.Properties[] dicos,
WebFifo pile_pages,
VerifThread verif_proc,
int max_depth)
Construit un nouvel objet NavThread pret à créer un nouveau processus pour
compléter et mettre à jour la base de données du crawler. |
Method Summary | |
protected Page |
caractPage(java.net.URL url)
Recupère toutes les caractéristiques d'une page (qu'on s'apprète à parser). |
void |
finish()
Permet un arrêt propre du processus. |
protected int |
getIdSite(java.lang.String site_url)
Récupère l'identificateur d'un site dans la base de données. |
protected int |
insertHttpDB(java.util.Hashtable ht_liens,
int id_page)
Insère tous les liens http d'une page web dans la base de données du crawler. |
protected int |
insertMailDB(java.util.Hashtable ht_liens,
int id_page)
Insère tous les liens de type mailto d'une page web dans la base
de données du crawler. |
protected int |
insertPageDB(java.lang.String fin_url,
int iSite)
Insert dans la base de données la page passée en argument. |
protected void |
insertPagePile(java.util.Hashtable ht_liens,
PageWeb pw)
Insert une page html dans la pile des pages à visiter. |
protected int |
insertPictDB(java.util.Hashtable ht_liens,
Page page,
java.net.URL url)
Insère tous les liens de type img (c'est à dire vers une image) d'une page web
dans la base de données du crawler. |
protected int |
insertSiteDB(java.lang.String site_url)
Insert dans la base de données le site passé en argument. |
protected java.lang.String |
newPictFile(java.lang.String path,
java.net.URL url)
Télécharge une image et la stocke dans un fichier dans le répertoire .. |
protected java.lang.String |
racine(java.net.URL url)
Extrait de l'url d'une page web le chemin de celle-ci, c'est à dire supprime de l'url absolue le nom du fichier html contenant la page. |
void |
run()
Méthode déterminant le fonctionnement du processus. |
protected void |
setLastModif(int id_page,
int lastModifDate)
Modifie la date de dernière modification d'une entrée de la table Page dans
la base de données. |
protected void |
suppPictFile(java.lang.String fichier)
Supprime un fichier image du système. |
Methods inherited from class java.lang.Thread |
activeCount, checkAccess, countStackFrames, currentThread, destroy, dumpStack, enumerate, getContextClassLoader, getName, getPriority, getThreadGroup, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setName, setPriority, sleep, sleep, start, stop, stop, suspend, toString, yield |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
protected final int BOUCLE_MAX
protected boolean to_finish
protected boolean in_getPage
PageWeb getPage()
de la classe WebFifo
.
LockedFifo.get()
protected java.util.Properties[] dicos
Ce tableau est partagé par tous les processus de navigation.
Il s'agit du tableau qui a été construit dans la classe Crawler
Crawler.dicos
,
Crawler.loadDico(java.lang.String,int)
protected java.io.PrintStream outLog
Ce flux est partagé avec les autres processus de navigation (NavThread
)
ainsi que le processus de vérification (VerifThread
).
VerifThread
protected WebFifo pile_pages
Cette pile est partagée par tous les processus de navigation.
protected VerifThread verif_proc
Ce qui permet aux processus de navigations d'avertir ce dernier si une nouvelle page a été insérée dans la base de données.
VerifThread.is_new_page
protected Pgsql bd
protected int max_depth
Constructor Detail |
public NavThread(java.lang.String nom, java.io.PrintStream outLog, java.util.Properties[] dicos, WebFifo pile_pages, VerifThread verif_proc, int max_depth)
NavThread
pret à créer un nouveau processus pour
compléter et mettre à jour la base de données du crawler.
nom
- nom du processusoutLog
- flux vers le fichier de journalisationdicos
- tableau contenant tous les dictionnaires des mots à ignorerpile_pages
- pile FIFO stockant les pages à visiteroutLog
,
dicos
,
pile_pages
Method Detail |
public void finish()
L'arrêt n'est pas immédiat, il s'agit plutôt d'une demande d'arrêt permettant au processus de terminer ce qu'il est en train de faire et l'empéchant d'enchainer sur une nouvelle tâche.
protected int insertSiteDB(java.lang.String site_url) throws java.sql.SQLException
site_url
- l'url du site a inséré dans la base de données
java.sql.SQLException
- En cas d'erreur de communication avec la base de données ou de réponses
incohérentes de sa part.protected int insertPageDB(java.lang.String fin_url, int iSite) throws java.sql.SQLException
Une page se définit par le site auquel elle appartient et le chemin indiquant le fichier contenant son code (ce chemin peut être vide, par exemple pour http://www.free.fr)
La date de dernière modification est mise à 0 initialement.
java.sql.SQLException
- En cas d'erreur de communication avec la base de données ou de réponses
incohérentes de sa part.protected int getIdSite(java.lang.String site_url)
Si ce site n'existe pas encore dans la base de données, il est inséré.
site_url
- L'url du site
insertSiteDB(String)
protected Page caractPage(java.net.URL url)
Si celle-ci n'est pas encore présente dans la base de données (c'est à dire si elle n'a jamais été visitée), elle est insérée.
url
- l'url de la page dont on veut connaître les caractéristiques
protected java.lang.String racine(java.net.URL url)
Par exemple, http://www.truc.fr/rep/page.htm
->
http://www.truc.fr/rep/
url
- l'objet représentant la page dont on veut connnaître la racine
protected int insertHttpDB(java.util.Hashtable ht_liens, int id_page) throws java.sql.SQLException
Cette méthode s'appuie entièrement sur les fonctions ins_http_url
et
ins_http_id
de la base de données.
ht_liens
- table de hachage contenant:
id_page
- l'identificateur (dans la base de données) de la page qui vient d'être parsée
java.sql.SQLException
- Emis lors d'une erreur inattendue.ins_http_url
et ins_http_id
dans le fichier crawler.sql"protected void insertPagePile(java.util.Hashtable ht_liens, PageWeb pw)
Quand on parse une page, tous les liens html trouvés dans cette page sont mis dans la pile des pages à visiter pour être parser à leur tour.
Normalement, il ne faut ajouter à cette pile que des pages n'allant pas à une profondeur
au-delà de la profondeur maximale d'exploration et n'étant pas déjà présente dans la pile.
Ces vérification ne sont pas faite ici, mais dans la méthode put(PageWeb)
de la classe WebFifo
.
ht_liens
- tous les liens html trouvés dans la page parséepw
- objet représentant la page parséeWebFifo.put(PageWeb)
protected void setLastModif(int id_page, int lastModifDate) throws java.sql.SQLException
Page
dans
la base de données.
id_page
- Identificateur de la page dont il faut modifier la date de dernière modification.lastModifDate
- La nouvelle date de dernière modification.
java.sql.SQLException
- En cas d'erreur de requête.protected int insertMailDB(java.util.Hashtable ht_liens, int id_page) throws java.sql.SQLException
mailto
d'une page web dans la base
de données du crawler.
Cette méthode s'appuie entièrement sur les fonctions ins_mail_adr
et
ins_mail_id
de la base de données.
ht_liens
- table de hachage contenant:
id_page
- l'identificateur (dans la base de données) de la page qui vient d'être parsée
java.sql.SQLException
- Emis lors d'une erreur inattendue.ins_mail_adr
et ins_mail_id
dans le fichier crawler.sql"protected int insertPictDB(java.util.Hashtable ht_liens, Page page, java.net.URL url) throws java.lang.Exception
img
(c'est à dire vers une image) d'une page web
dans la base de données du crawler.L'insertion de chaque image se fait en 3 temps:
newPictFile
(String,URL)
).
ins_pict_nom
et ins_pict_id
de la base
de données)
ht_liens
- table de hachage contenant:
page
- Objet contenant les caractéristiques (notamment id_site
et
id_page
) de la page qui vient d'être parséeurl
- L'url de la page dans laquelle on a trouvé l'image (nécessaire pour récupérer celle-ci).
java.sql.SQLException
- Emis lors d'une erreur inattendue avec la base de données
java.io.IOException
- Erreur de création du fichier où on va stocker l'image ou d'écriture dedans
(voir la méthode newPictFile(String,URL)
)
java.lang.SecurityException
- Problème de droit d'accès au fichier
(voir la méthode newPictFile(String,URL)
)
java.io.FileNotFoundException
- Impossible de retrouvé le fichier
(voir la méthode newPictFile(String,URL)
)
java.lang.Exception
ins_pict_nom
et ins_pict_id
dans le fichier crawler.sql",
newPictFile(String,URL)
protected void suppPictFile(java.lang.String fichier)
Deux raisons peuvent amener à supprimer un fichier image:
Remarque: les fichiers images se trouvent tous dans le répertoire ../data/
.
fichier
- Le nom du fichier contenant une image.protected java.lang.String newPictFile(java.lang.String path, java.net.URL url) throws java.io.IOException, java.lang.SecurityException, java.io.FileNotFoundException
../data/pict
.
path
- Le chemin de l'image dans le siteurl
- L'url de la page dans laquelle on a trouvé le lien (pour connaître l'url du site)
null
en cas d'erreur non grave (le processus peut continuer)java.io.IOException
- Erreur de création du fichier où on va stocker l'image ou d'écriture dedans
java.lang.SecurityException
- Problème de droit d'accès au fichier
java.io.FileNotFoundException
- Impossible de retrouvé le fichierpublic void run()
Ce processus permet d'alimenter la base de données du crawler en nouveaux liens et de mettre à jour les pages ayant déjà été visitée.
Ce processus peut se décomposer en trois étapes se répétant indéfiniment tant que la méthode finish() n'a pas été appelée:
run
in interface java.lang.Runnable
run
in class java.lang.Thread
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |