Potrzebuje wyci

Potrzebujesz pomocy z C, C++, perl, python, itp.
Tramp
Posty: 2
Rejestracja: 01 listopada 2009, 00:21

Potrzebuje wyciąć tekst pomiędzy znacznikamii html

Post autor: Tramp » 01 listopada 2009, 00:25

Cześć,

Po ściągnięciu tekstu źródłowego danej strony, chciałbym wyciąć z niej kilka danych, które znajdują się pomiędzy dwoma specyficznymi tagami html.

Kod: Zaznacz cały

<tr><td>[b]<font id="f18">S&P 500 - USA (S&P500)</font>[/b]</td><td width="25"><div style="width: 25px; height: 1px;"></div></td><td valign="top" align="right" nowrap="nowrap"><font id="f10"><span id="aq_s&p500_d3">30 Paź</span>, <span id="aq_s&p500_t2">22:10</span></font>[b]<font id="f18"><span id="aq_s&p500#1_c2">1036.19</span></font> <font id="f15"><span id="c2"><span id="aq_s&p500#1_m2">-29.92</span><span id="aq_s&p500#1_m3">(-2.81%)</span></span></font>[/b]</td></tr>
Niestety cała strona jest zapisywana w jednej linijce.

I chciałbym wyciąć wartość pomiędzy tymi spanami:

Kod: Zaznacz cały

<span id="aq_s&p500#1_c2">1036.19</span>
Aby otrzymać 1036.19

Pomoże mi ktoś z tym jak to zrobić?

Z góry dzięki :)

fnmirk
Senior Member
Posty: 8037
Rejestracja: 03 grudnia 2007, 06:37

Post autor: fnmirk » 01 listopada 2009, 00:33

Tramp, przejrzyj ten dział. Jest na pewno odpowiedź.

Dodano:
http://www.google.pl/search?hl=pl&sourc ... Google&lr=

Tramp
Posty: 2
Rejestracja: 01 listopada 2009, 00:21

Post autor: Tramp » 01 listopada 2009, 01:37

Już to widziałem i robiłem:

Kod: Zaznacz cały

sed -n '/<span id="aq_s&p500#1_c2">/,/<\/span>/'p 500.txt
ale niestety nie podaje żadnego wyniku. I to chyba przez to, że cała strona ściąga się do jednego wiersza długiego na kilometr.

a nawet, gdyby formatowanie na linie zostało zachowane to przy użyciu seda wyświetli całą linijkę z <span id="aq_s&p500#1_c2">1036.19</span>

A ja chciałbym, aby już mi nie pokazywało tych spanów, a samą wartość pomiędzy nimi.

grapeli23
Posty: 30
Rejestracja: 09 października 2009, 12:21

Post autor: grapeli23 » 01 listopada 2009, 02:12

Kod: Zaznacz cały

sed 's/.*#1_c2">\([0-9\.]*\)<\/span><\/font>.*/\1/' 500.txt 

igu3n
Posty: 5
Rejestracja: 22 marca 2009, 18:22

Post autor: igu3n » 20 listopada 2009, 14:43

@grapeli23, mógłbyś rozwinąć co w tej komendzie dokładnie się dzieje?

Awatar użytkownika
darkwater
Junior Member
Posty: 828
Rejestracja: 25 stycznia 2007, 14:01
Lokalizacja: Częstochowa

Post autor: darkwater » 20 listopada 2009, 14:47

igu3n,

Kod: Zaznacz cały

man sed

igu3n
Posty: 5
Rejestracja: 22 marca 2009, 18:22

Post autor: igu3n » 20 listopada 2009, 15:40

£ał, super, bardzo mi pomogłeś. Powiedz mi co twój post wniósł do tematu?
Myślisz że nie patrzyłem do mana?
Myślisz że nie szukałem informacji w internecie?
http://www.grymoire.com/Unix/Sed.html#uh-0

Mimo to poprosiłem autora o komentarz, bo przerobiona wersja jego metody nie działa mi na moim źródle strony.

Awatar użytkownika
darkwater
Junior Member
Posty: 828
Rejestracja: 25 stycznia 2007, 14:01
Lokalizacja: Częstochowa

Post autor: darkwater » 20 listopada 2009, 15:46

igu3n, nie wiem jak u ciebie, ale u mnie man sed daje "odpowiedź w języku polskim. Nie wiem czy ma to dla ciebie znaczenie, tym niemniej warto podkreślić ten fakt. W przykładzie który podał grapeli23, nie ma niczego, czego nie wyjaśniałby wspomniany manual. Twoje pytanie zaś mocno przypomina http://rtfm.killfile.pl/#praca_domowa , przy czym zwracam uwagę na słowo przypomina.

grapeli23
Posty: 30
Rejestracja: 09 października 2009, 12:21

Post autor: grapeli23 » 20 listopada 2009, 16:04

Dopóty nie poznasz alfabetu nic nie da tlumaczenie typu a to a, b to b, c to c ...

Poświęć 2-3 godziny i poznaj ten alfabet, a będziesz rozumiał znaczenie słów.

man grep sekcja REGULAR EXPRESSIONS

http://docstore.mik.ua/orelly/unix/upt/ch34_01.htm
http://docstore.mik.ua/orelly/unix/upt/ch26_04.htm

Podstawa to poznanie wyrażeń regularnych. Mają bardzo uniwersalny charakter. Opanowanie ich w stopniu podstawowym, umożliwi pracę z grepem, sedem, awkiem, perlem i setką innych narzędzi.

perfecto
Posty: 7
Rejestracja: 20 listopada 2009, 11:18

Post autor: perfecto » 20 listopada 2009, 20:27

A ja bym jednak proponowal zamiast regexow (lekko roznia skladnia, dojdzie cos pomiedzy i regex nie dziala/do poprawki) zwyczajnie przeleciec to jakas biblioteke pozwalajace operowac na DOM-ie, np

http://docs.python.org/library/xml.dom.html

Sprawdz tez jak dziala XPath - i jestes w domu

ODPOWIEDZ