Portál AbcLinuxu, 18. dubna 2024 11:45


Dotaz: BASH a notifikacia obsahu web stranky

5.2.2019 12:44 Kandidat viet
BASH a notifikacia obsahu web stranky
Přečteno: 426×
Odpovědět | Admin
Zdravim, potrebujem spravit skript ktory bude sledovat kazdu hodinu zmenu na viacerych webovych strankach (https) a pri konkretnej zmene posle notifikacny email. Da sa to JEDNODUCHO ( :-) ) spravit v BASHi ? Dakujem
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

xkucf03 avatar 5.2.2019 12:54 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: BASH a notifikacia obsahu web stranky
Odpovědět | | Sbalit | Link | Blokovat | Admin

V samotném Bashi by to šlo (umí TCP i UDP), ale to pravděpodobně nechceš.

Jednodušší bude přes wget stáhnout stránku a pomocí diff porovnat proti předchozí verzi, kterou sis uložil minule.

Potíž může nastat v případě, že se stránka dynamicky mění, např. obsahuje náhodný citát, dnešní svátek nebo datum atd. Pak by ti to hlásilo změny, i když by se ten podstatný obsah nezměnil. V tom případě potřebuješ porovnat jen obsah relevantních elementů – k tomu můžeš použít XPath (xpath), XQuery (galax-run nebo basex) nebo XSLT (xsltproc). Pokud je kód té stránky zprasený-nevalidní, tak před to budeš muset předřadit tidy, ale to je jen jeden příkaz/filtr.

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
5.2.2019 14:14 Trupik
Rozbalit Rozbalit vše Re: BASH a notifikacia obsahu web stranky
Pripájam sa k tomuto. Stiahnuť cez wget / curl, správnu časť si regulárnym výrazom vyseknúť cez sed, a potom porovnať voči predtým uloženému stavu cez diff. Výsledok buď poslať ručne cez mail, alebo to len vypísať na stdout a nechať cron.
5.2.2019 14:27 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: BASH a notifikacia obsahu web stranky
Odpovědět | | Sbalit | Link | Blokovat | Admin
Místo Bashe bych raději použil např. Python, který je pro tento účel mnohem lépe vybaven. Používám PHP, ve kterém si stáhnu stránku, parsuji do DOMu a přes XSLTProcessor vyexportuji požadovaný výstup. Když to strčíš do crontabu, tak budeš mít hotovo.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
5.2.2019 14:56 Kandidat viet
Rozbalit Rozbalit vše Re: BASH a notifikacia obsahu web stranky
ja som mal na mysli nieco taketo: if grep https://www.stranka.com = "string" then email ale asi sa stahovaniu straniek nevyhnem :-)
xkucf03 avatar 5.2.2019 15:28 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: BASH a notifikacia obsahu web stranky

A chceš hledat nějaký řetězec na stránce, nebo zjišťovat, zda se od minule změnila?

Tohle poprvé spadne (soubor kurzy.txt ještě neexistuje) a pak ti to bude vypisovat rozdíl od minule:

diff kurzy.txt <(wget -O - -o /dev/null http://www.cnb.cz/cs/financni_trhy/devizovy_trh/kurzy_devizoveho_trhu/denni_kurz.txt | tee kurzy.txt)

Když to dáš do cronu, tak ti bude ten rozdíl chodit e-mailem.

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
5.2.2019 15:48 Kandidat viet
Rozbalit Rozbalit vše Re: BASH a notifikacia obsahu web stranky
Asi som sa v prvotnej otazke zle vyjadril, ale ano hladal by som konkretnu zmenu resp. konkretny string na stranke a pokial sa objavi poslem email. Skusim tvoj postup. Dik
xkucf03 avatar 5.2.2019 16:03 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: BASH a notifikacia obsahu web stranky

Pokud hledáš konkrétní text, tak je to jednodušší:

wget -o /dev/null -O - http://www.cnb.cz/cs/financni_trhy/devizovy_trh/kurzy_devizoveho_trhu/denni_kurz.txt | grep -q "USD" && echo "stránka obsahuje požadovaný text"
Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.