Thread View: pl.comp.lang.tcl
11 messages
11 total messages
Started by Miszczu
Fri, 07 Oct 2005 15:11
parsowanie stron www
Author: Miszczu
Date: Fri, 07 Oct 2005 15:11
Date: Fri, 07 Oct 2005 15:11
7 lines
1003 bytes
1003 bytes
Probuje napisac pareser stron www, mam jednak maly klopot, czy istnieje
jakis prosty sposob zeby z danego kawalka strony pozbyc sie wszystkich
znacznikow html typu <b> <p> <a href...> itp itd
Fajnie by bylo gdybym mogl to zrobic np poprzez
string map { <*> "" } $zrodlo
Ale jakos nie dziala ;)
Re: parsowanie stron www
Author: Derek Kuliński / takeda
Date: Fri, 07 Oct 2005 18:09
Date: Fri, 07 Oct 2005 18:09
18 lines
1830 bytes
1830 bytes
On Fri, 07 Oct 2005 15:11:23 +0000, Miszczu wrote:
> Probuje napisac pareser stron www, mam jednak maly klopot, czy istnieje
> jakis prosty sposob zeby z danego kawalka strony pozbyc sie wszystkich
> znacznikow html typu <b> <p> <a href...> itp itd
>
> Fajnie by bylo gdybym mogl to zrobic np poprzez
> string map { <*> "" } $zrodlo
> Ale jakos nie dziala ;)
Ja kiedyś potrzebowałem coś takiego zrobić (w skrypcie do wysyłania smsów)
i pozbyłem się ich poprzez polecenie regsub. Ale nie wiem czy to najlepsze
rozwiązanie w tej sytuacji.
--
ダレック
takeda@IRCnet.EFnet, ICQ# 15827691, YahooIM: takeda64
http://ircwiki.takeda.tk - strona wiki poświęcona IRC
Re: parsowanie stron www
Author: Derek Kuliński / takeda
Date: Sat, 08 Oct 2005 23:01
Date: Sat, 08 Oct 2005 23:01
20 lines
1981 bytes
1981 bytes
On Fri, 7 Oct 2005 11:09:13 -0700, Derek Kuliński / takeda wrote: > Ja kiedyś potrzebowałem coś takiego zrobić (w skrypcie do wysyłania smsów) > i pozbyłem się ich poprzez polecenie regsub. Ale nie wiem czy to najlepsze > rozwiązanie w tej sytuacji. Ok w czeluściach swojego HD znalazłem ten skrypt. Jest b. stary dawno nie uaktualniany, więc wątpię czy nawet wysyła sms'y (te polskie brami lubiały b. często zmieniać swoje interfejsy). http://www.takeda.tk/site/download/eggdrop/tkdSMS.tar.gz Pewnie rozwiązanie nie jest najlepsze ale wtedy nie było tej grupy więc rozwiązanie zrobiłem we własnym zakresie. Ciebie pewnie bedzie interesować procedura striphtml. -- ダレック takeda@IRCnet.EFnet, ICQ# 15827691, YahooIM: takeda64 http://ircwiki.takeda.tk - strona wiki poświęcona IRC
Re: parsowanie stron www
Author: Miszczu
Date: Sat, 08 Oct 2005 23:25
Date: Sat, 08 Oct 2005 23:25
23 lines
1977 bytes
1977 bytes
Googie wrote: > Derek Kuliński / takeda wrote: > >> Ja kiedyś potrzebowałem coś takiego zrobić (w skrypcie do wysyłania >> smsów) i pozbyłem się ich poprzez polecenie regsub. Ale nie wiem czy >> to najlepsze rozwiązanie w tej sytuacji. >> > > [regsub] byłby najlepszy. W ogóle wyrażenia regularne są bardzo pomocne > i szybkie (chyba najszybsze z wszystkich innych metod, jakimi można je > ewentualnie zastąpić). Niestety jestem teraz zbyt zmęczony na > wymyślanie jak ta komenda w całości ma wyglądać - postaram się jutro. > Można też na piechotkę, w pętli, znak po znaku, ale nie poleca, bo nie > dość że 10 razy więcej roboty, kodu ( = 10 razy więcej możliwości > popełnienia błędu), to jeszcze na pewno wolniejsze (a zwłaszcza przy > większych stringach). > Kombinowalem z regsub, ale jakos nie moglem sobie z nim poradzic, prosil bym o niepisanie gotowych procedur, tylko o ewentualnie podpowiedzenie w ktorym kierunku mam isc. Co do likwidowania znak po znaku, to tez nie bardzo sie da, bo nie znam z gory wszystkich znacznikow :) Z gory dziekuje i pozdrawiam
Re: parsowanie stron www
Author: Googie
Date: Sat, 08 Oct 2005 23:25
Date: Sat, 08 Oct 2005 23:25
19 lines
1627 bytes
1627 bytes
Derek Kuliński / takeda wrote: > Ja kiedyś potrzebowałem coś takiego zrobić (w skrypcie do wysyłania > smsów) i pozbyłem się ich poprzez polecenie regsub. Ale nie wiem czy > to najlepsze rozwiązanie w tej sytuacji. > [regsub] byłby najlepszy. W ogóle wyrażenia regularne są bardzo pomocne i szybkie (chyba najszybsze z wszystkich innych metod, jakimi można je ewentualnie zastąpić). Niestety jestem teraz zbyt zmęczony na wymyślanie jak ta komenda w całości ma wyglądać - postaram się jutro. Można też na piechotkę, w pętli, znak po znaku, ale nie poleca, bo nie dość że 10 razy więcej roboty, kodu ( = 10 razy więcej możliwości popełnienia błędu), to jeszcze na pewno wolniejsze (a zwłaszcza przy większych stringach). -- Pozdrawiam (Greetings)! Googie
Re: parsowanie stron www
Author: Googie
Date: Sat, 08 Oct 2005 23:32
Date: Sat, 08 Oct 2005 23:32
39 lines
2014 bytes
2014 bytes
Miszczu wrote:
> Kombinowalem z regsub, ale jakos nie moglem sobie z nim poradzic,
> prosil bym o niepisanie gotowych procedur, tylko o ewentualnie
> podpowiedzenie w ktorym kierunku mam isc.
Jutro, sam muszę to przetestować (rzadko używam [regsub]).
> Co do likwidowania znak po
> znaku, to tez nie bardzo sie da, bo nie znam z gory wszystkich
> znacznikow :)
Nie. Robisz pętlę dla każdego znaku, w jeden z 2 sposobów:
for {set i 0} {[string index $string $i] != ""} {incr i} {
set char [string index $string $i]
#...
}
lub
foreach char [split $string ""] {
#....
}
(ten split rozdziela wszystko - co jeden znak)
W takiej pętli robisz switcha, dla przypadków "<", ">" i default.
Następnie używasz zmiennej sterującej 'isTag' dając jej wartości 0 lub
1, w zależności od tego czy pętla jest aktualnie w tagu html czy w
zwykłym tekście (a to wykrywasz po znakach < i >). W default
sprawdzasz wartość 'isTag' i w zależności od tego dodajesz bierzący
znak do stringa końcowego, lub nie.
Mam nadzieję że wyjaśniłem zrozumiale.
--
Pozdrawiam (Greetings)!
Googie
Re: parsowanie stron www
Author: Artur
Date: Mon, 10 Oct 2005 08:23
Date: Mon, 10 Oct 2005 08:23
33 lines
2043 bytes
2043 bytes
Miszczu schrieb:
> Probuje napisac pareser stron www, mam jednak maly klopot, czy istnieje
> jakis prosty sposob zeby z danego kawalka strony pozbyc sie wszystkich
> znacznikow html typu <b> <p> <a href...> itp itd
>
> Fajnie by bylo gdybym mogl to zrobic np poprzez
> string map { <*> "" } $zrodlo
> Ale jakos nie dziala ;)
# Można użyć też tDOM z opcją do HTML o ile to uważa się za
prosty spośób
# http://www.tdom.org
package require tdom
set f [open "my.html" r]
set document [dom parse -html [read $f]]
close $f
# remove all p nodes
foreach node [[$document documentElement] selectNodes */p] {
# transfer child nodes of p to parent
foreach c [$node childNodes] {
[$node parentNode] insertBefore $c $node
}
[$node parentNode] removeChild $node
}
set f [open "my2.html" w]
puts -nonewline $f [[$document documentElement] asHTML]
close $f
# Artur Trzewik
Re: parsowanie stron www
Author: Wojciech Kocjan
Date: Wed, 12 Oct 2005 06:31
Date: Wed, 12 Oct 2005 06:31
14 lines
1316 bytes
1316 bytes
On Fri, 07 Oct 2005 17:11:23 +0200, Miszczu <Miszczu@ble.ble> wrote:
> Probuje napisac pareser stron www, mam jednak maly klopot, czy istnieje
> jakis prosty sposob zeby z danego kawalka strony pozbyc sie wszystkich
> znacznikow html typu <b> <p> <a href...> itp itd
>
> Fajnie by bylo gdybym mogl to zrobic np poprzez
> string map { <*> "" } $zrodlo
> Ale jakos nie dziala ;)
regsub -all "<.*?>" $zrodlo "" zrodlo
--
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
Re: parsowanie stron www
Author: Wojciech Kocjan
Date: Wed, 12 Oct 2005 06:43
Date: Wed, 12 Oct 2005 06:43
64 lines
3033 bytes
3033 bytes
On Sun, 09 Oct 2005 01:01:53 +0200, Derek Kuliński / takeda
<d.kulinski@gmail.com> wrote:
> On Fri, 7 Oct 2005 11:09:13 -0700, Derek Kuliński / takeda wrote:
>
>> Ja kiedyś potrzebowałem coś takiego zrobić (w skrypcie do wysyłania
>> smsów)
>> i pozbyłem się ich poprzez polecenie regsub. Ale nie wiem czy to
>> najlepsze
>> rozwiązanie w tej sytuacji.
>
> Ok w czeluściach swojego HD znalazłem ten skrypt. Jest b. stary dawno nie
> uaktualniany, więc wątpię czy nawet wysyła sms'y (te polskie brami
> lubiały
> b. często zmieniać swoje interfejsy).
Ja mam troche inaczej, bez parsowania, taki prosty moduł do SMSów. Do
botów się kiepsko nadaje, chociaż podobno już można http::geturl z
-command wywołać, nie jestem w temacie.
Szukam naiwn^H^H^H^H^H^H zainteresowanego przerobieniem bramki ery. Nowy
Orange (trzeba zdefiniować callback, który dostaje token w postaci
binarnej) i stary dobry Plus działa. Ery mi się nie chce już dorabiać, a
chętnie bym na nią wysyłał.
> http://www.takeda.tk/site/download/eggdrop/tkdSMS.tar.gz
> Pewnie rozwiązanie nie jest najlepsze ale wtedy nie było tej grupy więc
> rozwiązanie zrobiłem we własnym zakresie. Ciebie pewnie bedzie
> interesować
> procedura striphtml.
Akurat ns_striphtml z AOLservera wygląda podobnie:
::nstcl::ad_proc ::nstcl::ns_striphtml {-tags_only:boolean html} {
summary "Strip HTML tags"
description {
<p><i>ns_striphtml</i> removes all HTML tags from a given chunk of
<i>html</i>.</p>
}
optional_switch {
<dle>
<dt><option>-tags_only</option></dt>
<dd>
If specified HTML entities are not removed; if not
specified,
they are.
</dd>
</dle>
}
} {
regsub -all -- {<[^>]+>} $html "" html
if {!$tags_only_p} {
regsub -all -- {&[^ \t\n\r;]+;} $html "" html
}
return $html
}
Przy okazji macie opis o tags_only_p ;-)
--
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
Re: parsowanie stron www
Author: Googie
Date: Wed, 12 Oct 2005 07:06
Date: Wed, 12 Oct 2005 07:06
9 lines
1050 bytes
1050 bytes
> regsub -all "<.*?>" $zrodlo "" zrodlo regsub -all "<.+>" $zrodlo "" zrodlo Czy to nie bedzie czasem to samo? -- Pozdrawiam! Googie
Re: parsowanie stron www
Author: Derek Kuliński / takeda
Date: Wed, 12 Oct 2005 07:47
Date: Wed, 12 Oct 2005 07:47
19 lines
1671 bytes
1671 bytes
On Wed, 12 Oct 2005 09:06:15 +0200, Googie wrote:
>> regsub -all "<.*?>" $zrodlo "" zrodlo
>
> regsub -all "<.+>" $zrodlo "" zrodlo
>
> Czy to nie bedzie czasem to samo?
Googie musiałdodać swoje 3gr, ok to ja też dorzucę:
Nie lepiej będzie:
regsub -all {<.+>} $zrodlo {} zrodlo
właściwie to AFAIR manual Tcl tak zaleca (chodzi o klamry)...
--
ダレック
takeda@IRCnet.EFnet, ICQ# 15827691, YahooIM: takeda64
http://ircwiki.takeda.tk - strona wiki poświęcona IRC
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads