Skocz do zawartości

Bash - Wycinanie Tekstu Pomiędzy Tagami Html


ZajOnDz

Rekomendowane odpowiedzi

Witam.

W pierwszej kolejności chciałbym się przywitać, bo jestem tu nowy - Cześć wszystkim :)

 

A teraz sprawa.

Potrzebuję wyciąć w bash-u tekst pomiędzy tagami HTML np.

 

<dt>Temperatura</dt><dd>20 C</dd>

 

Strona z której potrzebuję pobrać dane - http://e-wczasowicz.pl/pogoda,dzisiaj,bielsk,podlaski,1490.html

 

Chodzi mi o samą temperaturę "20 C". Znalazłem w necie sporo różnych sposobów, ale zwykle wycinało mi razem z tagami, albo wycinało pół strony... ^^

 

Potrzebuje tego, żeby wyciągnąć pogodę swojego miasta do Conky-ego. Wiem, są już gotowe skrypty, ale One pobierają pogodę dużych miast, a ja mieszkam w sumie w małej mieścinie i chciałbym mieć własną pogodę.

Aktualnie mam zrobione tak:

 

grep --max-count=1 "<dt>Temperatura</dt><dd>" pogoda,dzisiaj,bielsk,podlaski,1490.html | cut --bytes=35-37

 

Ogólnie nie jest źle, ale gdy temperatura spada do jednocyfrowej wartości to wycina mi jeszcze " < ", a czasami to w ogóle mi cyrki wyświetla...

Jakby udało mi się to zrobić to udostępniłbym config Conky-ego, bo w sumie ładnie mi wyszedł, sami zobaczcie -

 

Byłbym niezmiernie szczęśliwy, gdyby ktoś mi pomógł :rolleyes:

Pozdrawiam :)

Odnośnik do komentarza
Udostępnij na innych stronach

grep --max-count=1 "<dt>Temperatura</dt><dd>" pogoda,dzisiaj,bielsk,podlaski,1490.html | cut --bytes=35-37

Zapis "pogoda,dzisiaj,bielsk,podlaski,1490.html" wygląda podejrzanie. Jak to ściągasz? Najlepiej curlem:

curl -s http://e-wczasowicz.pl/pogoda,dzisiaj,bielsk,podlaski,1490.html | grep -m1 "<dt>Temperatura</dt><dd>" | cut -d '>' -f 4 |cut -d '<' -f1

Lub tylko grepem:

curl -s http://e-wczasowicz.pl/pogoda,dzisiaj,bielsk,podlaski,1490.html | grep -m1 "<dt>Temperatura</dt><dd>" | grep -oE "[[:digit:]]{1,}"

Odnośnik do komentarza
Udostępnij na innych stronach

Sciagam przez wget, ale zmienilem juz troche.

 

W conky-m na poczatku

${execi 60 wget --output-document=pogoda.html http://e-wczasowicz.pl/pogoda,dzisiaj,bielsk,podlaski,1490.html}

 

a pózniej jak pobieram jakies dane to np.

${execi 60 grep --max-count=1 "Predkosc wiatru" pogoda.html | cut -d '>' -f 4 |cut -d '<' -f1}

 

A na koncu oczywiscie usuwam

${execi 60 rm pogoda.html}

 

@edit

Wrzucilem juz paczke na http://gnome-look.org/content/show.php?content=141258 jakby ktos chcial... :)

Pozdrawiam.

  • Upvote 1
Odnośnik do komentarza
Udostępnij na innych stronach

sed version:

curl -s 'http://e-wczasowicz.pl/pogoda,dzisiaj,bielsk,podlaski,1490.html' |
sed -n  's:.*<dt>Temperatura</dt><dd>\([0-9]*\) *[°C]*</dd>.*:\1:p'

Czekalem az ktos to w jedno polecenie wrzuci i jakos tak czulem ze to bedziesz Ty :)

 

EDIT:

Ale wycinasz równiez "C", a kolega chcial zostawic.

Odnośnik do komentarza
Udostępnij na innych stronach

 

Ale wycinasz również "C", a kolega chciał zostawić.

 

Wycina C, bo Conky nie rozpoznaje HTML-owego zapisu stopni i wyświetla jako zwykły tekst ° :)

 

W configu Conky również tak zrobiłem, a C dodałem ręcznie :P

 

P.s. mały offtop:p Pobierajcie config i oceniajcie. A ja od jutra biorę się za kolejny projekt :P

 

Pozdrawiam i dziękuje za odpowiedzi :)

Odnośnik do komentarza
Udostępnij na innych stronach

Tak na szybko: lewa strona wykłada się na maszynach jednoprocesorowych. Ciekawe jak jest przy 4 rdzeniach, ale nie mam czasu teraz popatrzeć.

Conky: obj->data.i 2 info.cpu_count 1
Conky: attempting to use more CPUs than you have!

 

Wykłada sie, bo jest robiona pod dwa procesory. Musisz usunąć drugi procesor z configu z pliku ~/conky/conky_lewa i z ~/.conky/.lua/scripts/lewa.lua

Wiesz, zawsze przy pobieraniu czyjegoś configu trzeba go dostosować do swojego kompa...

 

Później może przygotuję paczkę pod jeden procek...

Odnośnik do komentarza
Udostępnij na innych stronach

To, ze trzeba dostosowac jest oczywiste. Warto jednak pewne podstawowe sprawy opisac w instrukcji. wyszukiwanie w pliku mija sie wg mnie z celem. Jesli ktos potrafi bez pomocy zmodyfikowac plik, to równie dobrze moze napisac wlasny konfig :)

Chodzi mi o proste, czytelne instrukcje typu: "jesli masz 1 procesor, to usun linie od 73 do 80 w pliku .conky/conky_lewa". Przecietny uzytkownik widzac takie "kwiatki" jak wkleilem powyzej powie "ale shit" i przejdzie do wyszukiwania konfiguracji, która albo zastosuje bez poprawek albo takiej, w której poprawki sa jasno opisane.

 

Chciales uwag, wiec niniejszym zglaszam.

 

 

P.S. pozostawianie w kodzie wyrazów niecenzuralnych (nawet w formie nazw zmiennych) nie nalezy do dobrych obyczajów programistycznych ;)

Odnośnik do komentarza
Udostępnij na innych stronach

...

P.s. maly offtop:p Pobierajcie config i oceniajcie. A ja od jutra biore sie za kolejny projekt :P

 

Pozdrawiam i dziekuje za odpowiedzi :)

 

Swietne sie prezentuja Twoje konfig.

Na KDE, aby uzyskac przezroczystosc i wyswietlanie na wszystkich pulpitach musialem wprowadzic kilka zmian..., ale do rzeczy:

Aby Conky uruchamial sie przy starcie systemu dodaj do Programów Startowych dwa wpisy

/home/twoja_nazwa_uzytkownika/.conky/conky_start_lewa

/home/twoja_nazwa_uzytkownika/.conky/conky_start_prawa

 

Zaproponowalbym jeden skrypt uruchamiajacy dwa pliki konfiguracyjne, dodany do "Programów Startowych".

#!/bin/bash
sleep 10
conky -d -c ~/.conky/conky_lewa
conky -d -c ~/.conky/conky_prawa

 

/edit:

Z Twojego konf.

...sensors | grep "Vcore:" | cut --bytes=14-18}

"bawisz" sie w wycinanke...

...sensors | grep "Vcore:" | awk '{print $3}'} V

awk wydaje sie byc bardziej paktyczne (?).

 

 

Pozdrawiam.

Odnośnik do komentarza
Udostępnij na innych stronach

Jesli mozna to liczbe procesorów mozna przeciez sprawdzac i inne zmienne rzeczy równiez.

O ile pamietam conky ma chyba mozliwosc uruchamiania skryptów zewnetrznych, wiec badanie liczby procesorów jest jak najbardziej mozliwe, ale nie wiem jak jest ze zwracaniem zmiennych.

W sumie mozna by sie pokusic równiez o sprawdzanie geoip i na tej podstawie wyszukiwac region w "pogodynce" ;) Oczywiscie z mozliwoscia zmiany przez uzytkownika, jesli automat nie trafi.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...