Strona 1 z 1

[SOLVED] Pobranie kodu strony, pobranie fragmentu i zapisanie do pliku

: 15 sie 2011, 19:49
autor: krycho_zak
Witam,
Chciałem napisac sobie skrypt do conky który pobierałby mi kod strony, wycinał to co mi potrzebne i zapisywał do pliku wynikowego.
Poszukałem trochę i skleciłem sobie coś takiego:

Kod: Zaznacz cały

#! /bin/bash 
wget -O wynik.txt www.formula1.pl 
echo `grep -A 25 '<h3>ODLICZANIE</h3>' wynik.txt`>tmp.txt 
echo `sed 's/<[^>]*>//g' tmp.txt`>wynik.txt 
Wszystko działa prawie tak jakbym chciał, jednak jak widać liczby są oddzielone spacjami.

Kod: Zaznacz cały

ODLICZANIE Do GP Belgii zostało: tygodni 0 1 dni 0 6 godzin 1 3 minut 3 2
Jeśli ktoś wie w jaki sposób można te spacje skasować i ewentualnie uprościć skrypt to proszę o podpowiedź.
Pozdrawiam,
Krzysiek

Re: Pobranie kodu strony, pobranie fragmentu i zapisanie do pliku

: 16 sie 2011, 08:31
autor: beluosus
Mniemam, że nie bardzo rozumiesz użycie echo i ``, mimo że użyłeś go dobrze to niepotrzebnie dwa razy.

Kod: Zaznacz cały

echo `grep -A 25 '<h3>ODLICZANIE</h3>' wynik.txt` | sed 's/<[^>]*>//g; s/\([0-9]\)\+\s*\([0-9]\)\+/\1\2/g'
Jak chcesz możesz od razu przekierować wyjście wgeta do grepa, bez konieczności tworzenia pliku:

Kod: Zaznacz cały

wget -O- www.formula1.pl 2> /dev/null | echo `grep -A 25 '<h3>ODLICZANIE</h3>' wynik.txt` | sed 's/<[^>]*>//g; s/\([0-9]\)\+\s*\([0-9]\)\+/\1\2/g'
Wynik:

Kod: Zaznacz cały

ODLICZANIE   Do GP Belgii zostało:  tygodni 01   dni 05   godzin 05   minut 41

Re: Pobranie kodu strony, pobranie fragmentu i zapisanie do pliku

: 16 sie 2011, 11:05
autor: krycho_zak
Dzięki za odpowiedź.
No fakt nie znam jeszcze poleceń na tyle by móc je używać najbardziej optymalnie.

Rozwiązanie które podałes coś nie chce u mnie działać.
Jak wkleję do skryptu i uruchomię to nic się nie dzieje, plik wynik.txt jest pusty.
Po odpaleniu w terminalu zwraca

Kod: Zaznacz cały

grep: wynik.txt: Nie ma takiego pliku ani katalogu

Re: Pobranie kodu strony, pobranie fragmentu i zapisanie do pliku

: 16 sie 2011, 11:39
autor: beluosus
Jeśli mówisz o pierwszym poleceniu to musisz najpierw pobrać plik tak jak to robiłeś dotychczas. Jeśli mówisz o drugim poleceniu to popełniłem błąd, powinno być:

Kod: Zaznacz cały

wget -O- www.formula1.pl 2> /dev/null | echo `grep -A 25 '<h3>ODLICZANIE</h3>'` | sed 's/<[^>]*>//g; s/\([0-9]\)\+\s*\([0-9]\)\+/\1\2/g'
Tak to jest jak się copy-pastuje. ;) W ogóle pierwszy raz widzę w zastosowaniu taką konstrukcję jak ... | echo `...` | ... ale wydaje się, że działa. ;)

Re: Pobranie kodu strony, pobranie fragmentu i zapisanie do pliku

: 16 sie 2011, 12:19
autor: krycho_zak
Dzieki za pomoc ;)

W międzyczasie kombinowałem z tym co mi podałeś w poprzednim poście i wyszło na to, że podmieniłem u siebie na coś takiego

Kod: Zaznacz cały

#! /bin/bash 
wget -O wynik.txt www.formula1.pl #zapisanie kodu strony do pliku
echo `grep -A 25 '<h3>ODLICZANIE</h3>' wynik.txt`>tmp.txt
echo `sed 's/<[^>]*>//g; s/\([0-9]\)\+\s*\([0-9]\)\+/\1\2/g' tmp.txt`>wynik.txt
i działało jak należy ale niepotrzebnie skrypt wykorzystywał dwa pliki

Teraz wygląda jakoś tak:

Kod: Zaznacz cały

#! /bin/bash 
wget -O- www.formula1.pl 2> /dev/null | echo `grep -A 25 '<h3>ODLICZANIE</h3>'` | sed 's/<[^>]*>//g; s/\([0-9]\)\+\s*\([0-9]\)\+/\1\2/g'>wynik.txt
Dodałem by wynik był zapisany do pliku.

Dzięki za pomoc ;)