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

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
krycho_zak
Piegowaty Guziec
Piegowaty Guziec
Posty: 18
Rejestracja: 19 kwie 2010, 22:33
Płeć: Mężczyzna
Wersja Ubuntu: 10.10
Środowisko graficzne: GNOME
Architektura: x86

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

Post 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
Ostatnio zmieniony 16 sie 2011, 19:14 przez krycho_zak, łącznie zmieniany 1 raz.
Awatar użytkownika
beluosus
Zakręcona Traszka
Zakręcona Traszka
Posty: 695
Rejestracja: 01 paź 2006, 15:32
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Xfce
Architektura: x86
Kontakt:

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

Post 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
krycho_zak
Piegowaty Guziec
Piegowaty Guziec
Posty: 18
Rejestracja: 19 kwie 2010, 22:33
Płeć: Mężczyzna
Wersja Ubuntu: 10.10
Środowisko graficzne: GNOME
Architektura: x86

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

Post 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
Awatar użytkownika
beluosus
Zakręcona Traszka
Zakręcona Traszka
Posty: 695
Rejestracja: 01 paź 2006, 15:32
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Xfce
Architektura: x86
Kontakt:

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

Post 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. ;)
krycho_zak
Piegowaty Guziec
Piegowaty Guziec
Posty: 18
Rejestracja: 19 kwie 2010, 22:33
Płeć: Mężczyzna
Wersja Ubuntu: 10.10
Środowisko graficzne: GNOME
Architektura: x86

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

Post 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 ;)
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 17 gości