PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Neue Seite erkennen, Zähler hochsetzen



rannseier
16.04.06, 16:16
Moin..

Ich habe folgendes Problem:

Ich möchte in einem Script erkennen können, wenn eine Seite mit Inhalt versehen wird.

Die URL dazu besteht aus einem Zähler.

Beispiel:

http://saar-echo.de/de/art.php?a=31670

Wenn nun unter der Seite endlich Inhalte gefunden wurden (ohne Inhalt würde das so aussehen: http://saar-echo.de/de/art.php?a=31671
kategorie kathead SELECT * FROM kategorie WHERE id= AND ISNULL(kategorie.inaktiv) You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND ISNULL(kategorie.inaktiv)' at line 1
)

Wenn was neues gefunden wurde soll die aktuelle URL per Mail verschickt werden, der Zähler hochgezählt werden und beim nächsten Prüfen (z.B. im Cron-Job einmal pro Stunde) die neue URL geprüft werden.

Kann man sowas einfach in einem Script basteln?

Ich hab sowas unter Linux noch nie gemacht, vor 10 Jahren auf dem Amiga, war das alles kein Problem :-)


MfG,
Karl

tschloss
16.04.06, 16:24
Kapiere nix!
Meinst Du mit Seite "Webseite"? Ist das deine eigene Webseite / Site?

Legst Du leere Seiten an und jmd anders fült diese?
Oder möchtest du eine fremde Website auf neuen Content überwachen? Eine Website, deren CMS "zufällig" die IDs für Content hochzählt (ah, das scheint Sinn zu machen...)

Wo liegt das Problem: im Erkennen, ob sich einer HTML-Seite was geändert hat oder am Verwalten irhendwelcher Zustände in mysql?

Wozu ist das alles? Mir fehlt die Phantasie.

Greetz
Thomas

rannseier
16.04.06, 16:29
Moin,

es ist eine fremde Seite, die IDs werden (fast) lückenlos hochgezählt.

Ich fang mal mit den einfachen Sachen an :-) :

Wie speicher ich einen Zähler zwischen zwei Cronjobs, z.B. irgendwo in einer Datei?


MfG,
Karl

tschloss
16.04.06, 16:29
Klar geht das.

Im Kern ist das ein Aufruf von "wget", dessen Ergebnis du dann mit z.B. mit grep überprüfst.
Findet die Überprüfung einen Content, dann sendet der Befehl "mail" eine Nachricht an einen Empfänger. Der Mailtext oder das Subject kann die URL enthalten.

Jetzt bracuht man drumrum nur noch eine Verwaltung der Nummern, die man schon geprüft hat im einfachsten Fall die letzte ID, die noch Content lieferte. Diese Zahl muss man sich zB. in ein File speichern.

Das kann man mit einem Bash-Skript erledigen.

Greetz
Thomas

rannseier
16.04.06, 16:37
Moin,

Genau dieses Prinzip habe ich auch so vor.

Ich hab mir mal ein Gerüst gebastelt:

wget -v http://saar-echo.de/de/art.php?a=31670 -O /home/rannseier/saarecho/test


Frage nun: Wie kann ich relativ einfach irgendwelche Daten aus Variablen in Dateien zwischen speichern?


echo 213 >zaehler krieg ich ja noch hin. Aber wie bekomm ich das wieder aus der Datei raus? echo <zaehler geht ja leider nicht in der bash.

Und wie bau ich das in die URL ein?

(Schade das ich die letzten 10 Jahre gepennt hab..)


MfG,
Karl

tschloss
16.04.06, 16:45
Schade, dass ich der Bash-Noob bin. Aber ich weiss sicher, dass das no Prob ist ;)

Z.B. kannst Du mit den Backticks ` das Ergebnis eines Shell-Befehls in einen Befehlsstring einfügen.

Also ein

wget www.blabla.com/x.php?a=`cat zaehlerdatei`
Oder ähnlich ein zaheler=`cat zaelerdatei` wget....a=$zaehler
könnte dem schon nahe kommen.


Aber nochmals - ich würde mir das zwar mit 20 Minuten Gebastel und ein wenig Studium einer Bash-Beschreibung zutrauen, aber kann es nicht aus dem Stand (man vergißt leider so schnell). Versuchs mal oder warte, bis hier ein Bash-Profi reinschneit.

Greetz
Thomas

rannseier
16.04.06, 17:03
So,

Ich hab mal ein wenig gebastelt (was unter Zeitdruck in einem ICafe gar nicht mal so einfach ist..)


read zaehler </home/rannseier/saarecho/zaehler

url=http://saar-echo.de/de/art.php?a=$zaehler

#echo $url


wget -v $url -O /home/rannseier/saarecho/test


#erfolgreich:

zaehler=$[$zaehler+1]

echo $zaehler >/home/rannseier/saarecho/zaehler

# mail generieren




#nicht erfolgreich:

echo $zaehler



Nun muß ich noch irgendwie erkennen ob sich was geändert hat und ein paar Sprungbefehle finden.. Hat jemand auf anhieb einen Tipp?


MfG,
Karl

rannseier
16.04.06, 17:54
So, ich hab mir mal was gebastelt:


read zaehler </home/rannseier/saarecho/zaehler

url=http://saar-echo.de/de/art.php?a=$zaehler

#echo $url


wget -v $url -O /home/rannseier/saarecho/test

grep -ci "kategorie kathead SELECT" /home/rannseier/saarecho/test >/home/rannseier/saarecho/test2

read ergebnis </home/rannseier/saarecho/test2
echo ergebnis $ergenbis

if test $ergebnis -gt 0
then
echo nix neues auf saar echo
rm /home/rannseier/saarecho/test2
rm /home/rannseier/saarecho/test
exit 0 # und weg
else
echo neuer artikel auf saar-echo Nr: $zaehler Link: $url

echo $url >/home/rannseier/saarecho/test3
echo "." >>/home/rannseier/saarecho/test3
mail -s "Neuer Artikel auf Saar-Echo: Nr: $zaehler Link: $url" saarecho@kura.de </home/rannseier/saarecho/test3


zaehler=$[$zaehler+1]
echo $zaehler >/home/rannseier/saarecho/zaehler
rm /home/rannseier/saarecho/test2
rm /home/rannseier/saarecho/test
rm /home/rannseier/saarecho/test3

fi

exit 0



Verbesserungsvorschläge?

MfG,
Karl

tschloss
16.04.06, 19:09
Prima, wenn es läuft. Das ging ja dann doch rasch.
Wahrscheinlich packen das geübte Basher in 3 Zeilen, aber das ist ja nicht das Ziel.

Have fun!
Greetz
Thomas

Ixot
17.04.06, 11:28
Noch kurz zur Ergänzung:
statt extra eine zweite Datei anzulegen, kann man das gleiche mit

if (grep "kategorie kathead SELECT" home/rannseier/saarecho/test >/dev/null)
then
echo nix neues
else
echo $url. | mail -s "Neuer Artikel auf Saar-Echo: Nr: $zaehler Link: $url" saarecho@kura.de
fi

erreichen.

PS: Kann sein, dass du grad ne Testmail von mir gekriegt hast. Wenn ja bitte löschen. :)