#1 Le 18/12/2010, à 13:55
- omnimax
commande pour scanner une page web et voir si elle a été modifiée
bonjour,
tout est plus ou moins dans mon titre car je désirerais créer un petit script pour analyser en permanence les sites sur lesquels je vais souvent (mail et autres) et afficher un message en notification grâce à zenity.
merci pour vos pistes.
14.04 unity et Linux Mint KDE 13 zsh-meilleur shell script fire
Hors ligne
#2 Le 18/12/2010, à 17:22
- pode
Re : commande pour scanner une page web et voir si elle a été modifiée
Par exemple avec curl :
$ ls -l /var/www/index.html
-rw-r--r-- 1 root root 177 2010-12-13 20:01 /var/www/index.html
curl -I http://localhost/index.html
HTTP/1.1 200 OK
Date: Sat, 18 Dec 2010 15:56:08 GMT
Server: Apache/2.2.16 (Ubuntu)
Last-Modified: Mon, 13 Dec 2010 19:01:47 GMT
[...]
$ sudo touch /var/www/index.html
$ ll /var/www/index.html
-rw-r--r-- 1 root root 177 2010-12-18 16:56 /var/www/index.html
$ curl -I http://localhost/index.html
HTTP/1.1 200 OK
Date: Sat, 18 Dec 2010 16:13:43 GMT
Server: Apache/2.2.16 (Ubuntu)
Last-Modified: Sat, 18 Dec 2010 15:56:27 GMT
[...]
A condition que ce soit supporté par le serveur HTTP, la date de dernière modification est dans le header LastModified (W3C - RFC 2616 - Champ LastModified)
Voici un exemple de code utilisant curl + Last-Modified (à améliorer avec une gestion des erreurs) :
$ cat dateHttp.sh
DERNIERE_MODIFICATION_HTTP=`curl -s -I http://localhost/index.html | awk ' /^Last-Modified: / { print gensub(/^Last-Modified: /,"",1) } '`
echo "Date de derniere modification : ${DERNIERE_MODIFICATION_HTTP}"
DERNIERE_MODIFICATION_HTTP_EPOCH=`LANG=C date -d "${DERNIERE_MODIFICATION_HTTP}" +%s`
echo "Date de derniere modification au format Epoch : ${DERNIERE_MODIFICATION_HTTP_EPOCH}"
$ ./dateHttp.sh
Date de derniere modification : Sat, 18 Dec 2010 15:56:27 GMT
Date de derniere modification au format Epoch : 1292687787
Hors ligne
#3 Le 19/12/2010, à 02:17
- chopinhauer
Re : commande pour scanner une page web et voir si elle a été modifiée
L'entête Last-Modified est bien prise en compte par tous les serveurs Web. Malheureusement pour les sites dynamiques c'est à l'auteur du script de prendre en charge le calcul de la dernière modification. Du coup dans la plupart des sites la date de dernière modification n'est pas correcte (n'existe pas ou c'est la date de téléchargement de la page). Regarde par exemple les pages de Ubuntu-fr.
D'un autre côté la date de dernière modification a un intérêt uniquement pour certains types de contenu : une page wiki, un tutoriel, etc… Pour des pages qui ont plusieurs éléments distincts c'est largement insuffisant : est-ce que un ticket d'un blog a changé si un commentaire a été ajouté ? Quid d'un site de nouvelles ?
Pour cela d'autre technologies permettent un contrôle plus fin : il s'agit essentiellement des protocoles syndication de contenu RSS et Atom et de leur version push (le serveur transmet sans délai toute modification aux clients) PubSubHubbub.
Évidemment il existe beaucoup de lecteurs pour ce genre de technologie, par exemple Liferea sous Ubuntu ou l'application web Google Reader.
Pensez à donner un bon titre à vos sujets : cela permettra d'aider d'autres utilisateurs dans votre même situation. Ce n'est pas qu'en donnant des solutions qu'on aide, mais aussi en posant des bonnes questions et… facilement trouvables.
Hors ligne
#4 Le 19/12/2010, à 12:18
- 00_00
Re : commande pour scanner une page web et voir si elle a été modifiée
y a un logiciel ecrit en python qui correspond à ton besoin http://specto.sourceforge.net/
Hors ligne
#5 Le 20/12/2010, à 16:07
- omnimax
Re : commande pour scanner une page web et voir si elle a été modifiée
Salut merci à tous pour vos réponses. En effet concernant Curl l'entête last modidied n'est pas prises en compte pour les forums par exemple (le forum ubuntu en fait partie) Sinon pour les autres pas de soucis.
J'ai aussi installé Specto en prenant soin d'installer toutes les dépendances requises mais il m'indique quand même le message d'erreur suivant :
(specto:17652): libglade-WARNING **: could not find glade file '/usr/share/specto/glade/notifier.glade'
Traceback (most recent call last):
File "/usr/local/bin/specto", line 30, in <module>
specto = Specto()
File "/usr/local/lib/python2.6/dist-packages/spectlib/main.py", line 109, in __init__
self.notifier = Notifier(self)
File "/usr/local/lib/python2.6/dist-packages/spectlib/notifier.py", line 84, in __init__
self.wTree = gtk.glade.XML(gladefile, windowname, self.specto.glade_gettext)
RuntimeError: could not create GladeXML object
14.04 unity et Linux Mint KDE 13 zsh-meilleur shell script fire
Hors ligne
#6 Le 20/12/2010, à 17:02
- FRUiT
Re : commande pour scanner une page web et voir si elle a été modifiée
(specto:17652): libglade-WARNING **: could not find glade file
Tu as du oublier d'installer glade (ou pas la bonne version, ou l'installation s'est mal déroulée)
Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean
Hors ligne
#7 Le 20/12/2010, à 17:08
- omnimax
Re : commande pour scanner une page web et voir si elle a été modifiée
non, glade est installé.
14.04 unity et Linux Mint KDE 13 zsh-meilleur shell script fire
Hors ligne
#8 Le 21/12/2010, à 21:29
- 00_00
Re : commande pour scanner une page web et voir si elle a été modifiée
Salut merci à tous pour vos réponses. En effet concernant Curl l'entête last modidied n'est pas prises en compte pour les forums par exemple (le forum ubuntu en fait partie) Sinon pour les autres pas de soucis.
J'ai aussi installé Specto en prenant soin d'installer toutes les dépendances requises mais il m'indique quand même le message d'erreur suivant :
(specto:17652): libglade-WARNING **: could not find glade file '/usr/share/specto/glade/notifier.glade' Traceback (most recent call last): File "/usr/local/bin/specto", line 30, in <module> specto = Specto() File "/usr/local/lib/python2.6/dist-packages/spectlib/main.py", line 109, in __init__ self.notifier = Notifier(self) File "/usr/local/lib/python2.6/dist-packages/spectlib/notifier.py", line 84, in __init__ self.wTree = gtk.glade.XML(gladefile, windowname, self.specto.glade_gettext) RuntimeError: could not create GladeXML object
Tu peux l'installer à partir des depots
Hors ligne