Witam.
W dalszym ciągu poszerzam wiedzę ćwicząc na IRC bocie.
Postanowiłem mu dopisać pobieranie tekstów z basha.
Nie chcę w to angażować żadnych gemów itd. Ma to być prosty skrypcik.
Potrzebuję już tylko wyrażenia regularnego które mi “wytnie” kawałek tekstu.
Kod źródłowy strony:
// Od tego momentu do…
ona znajduje sie w innej podsieci
mów do mnie rozwiązaniami a nie problemami
nie będzie działac
// tego momentu tekst mnie interesuje.
<!--[/code]
To urywek strony bash.org.pl , by pokazać o co mi chodzi.
Napisałem więc sobie prosty kod:
[code = ruby]
res = Net::HTTP.get_response(URI.parse('http://bash.org.pl/599937/')).body
res.each {|l| if res =
(/\s*(.*)\s*<\/div>/iu).match(l)
then send"privmsg #{$chan} : #{res[1]}" end }
[/code]
Myślałem, że może nie znając wszystkich znaków tworzących wyrażenie zrobiłem błąd, więc zastąpiłem
wszystkie "niepewne" kropką. Niestety wyrażenie nie zostaje dopasowane.
Może ktoś wie co jest nie tak?
Pewnie to jakiś banalny błąd, ale mam nadzieję, że się zbytnio śmiać nie będziecie. : P
Bo sam już nie wiem jak to rozkminić po dwóch dniach myślenia.
Teraz dopasowuje wyrażenie ale wyświetla tylko 1 linię i nie poprzestaje na tylko wyświetla
(w oknie bota) dużo więcej. Oprócz tego wywala błąd: can’t convert MatchData into String
[quote=Risus]Teraz dopasowuje wyrażenie ale wyświetla tylko 1 linię i nie poprzestaje na tylko wyświetla
(w oknie bota) dużo więcej. Oprócz tego wywala błąd: can’t convert MatchData into String[/quote]
zobacz sobie pod hasłem non-greedy regex, po polsku to niezachłanne albo leniwe
co wyglądałoby tu tak
gotar, pomysł całkiem dobry, ale pod warunkiem, że plik z fortunkami pobierze raz i później będzie go aktualizował. W innym wypadku z każdym żądaniem będzie pobierał prawie 2MB danych, a mógłby pobrać tylko 5KB i pobrany kod HTML przeparsować za pomocą Nokogiri czy Hpricota.
no zapewne, pobranie raz to jedyny slyuszny sposob, ja bym zrobil tak, ze sprawdza numer zadania, sa to id przyrostowe wiec jak ostatni z pobranych ma np 54342 to jak nizszy to skorzystaj z tego pliku co jest, jak nie to pobierz i tak dalej.
Sam bym uzyl Nokagiri, Hapikrota czy cos, ale na samej gorze pisze, ze nie chce uzywac zadnych pluginow, gemów itp. No więc selektory css itp odpadaja.