Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
czyli coś, co mnie kręci od zawsze. O ile za młodu coś tam skrobałem z kilkoma maniakami (pozdro [b]sigo[/b]!), o tyle ja się postarzałem, a technika poszła mocno naprzód.
Ostatnimi czasy znowu naszły mnie ciągoty na rippowanie materiałów ze stron za pomocą własnych botów. Wiadomo, póki co jadę Bashem (węże w sed'dzie, dużo cut, tr, grepów, kod jest zaciemniony od fazy projektowania po wersję produkcyjną xD), ale docelowo ma to odbywać się Pythonem z jakimś dodatkiem (bo jednak chcę się rozwijać, a choćby dla własnej satysfakcji).
Przypomniałem sobie o portalu zlecenia.przez.net, pamiętam jak swego czasu znajdywalem tam różne interesujące i relatywnie proste zlecenia. Zajrzałem i dziś i postanowiłem opykać jedno 'na sucho', tzn, sprawdzić czy w ogóle podołam. Znalazłem coś ciekawego, ale przerosła mnie konfiguracja serwera www :P
link do zlecenia: http://www.zlecenia.przez.net/aukcja,118054,pozyskanie-wyciagnieci-bazy-danych-z-katalogu-firm
Spojler, czyli o co chodzi: gość chce wyciągnąć z takich linków http://akses.com.pl/biznes,i,ekonomia/okno,pcv,warszawa,s,2451/
takie dane: P.P.U.H. INVESTBUD Leszek Wypiórkiewicz; 483701445; Sadowa; 22; 26-500; Szydłowiec; biuro@hurtokien.pl; www.hurtokien.pl; 13 04 2012
Określił, że interesują go dane z rekordów numer od do.
Se myślę: klasyczna pętelka, tu jakiś wget, tam ciachnę awkiem, do csv też napiszę jakiś wypluwacz, aż przyjrzałem się linkowi.
Tak, paskudny rewrite. i o ile wykoncypowałem jak podołać zleceniu (mapa strony, kategorie, odwiedzenie każdego linka i porównanie parametrów urla do widełek zadanch przez zlecającego, jeśli pasują, to do wstępnej bazy, dalej pomartwię się później :P), o tyle zastanawia mnie jakby to zrobić jadąc po numerach rekordów. Nie raz już widziałem podobne linki i zostawiałem temat (czy to galerie, czy stronki ze scenowym stuffem), taka wiedza przydałaby mi się na później, nie ukrywam :)
[color=red]Zaznaczam, że nie zamierzam brać udziału w licytacji zlecenia, a jednie interesuje mnie strona techniczna przedsięwzięcia[/color]; to taki disclaimer jakby ktoś se miał pomyśleć 'no tak, ja mu oddam za free technologię, a on na tym zarobi krocie'.
Offline
Perlem Mociumpanie, Perlem:
[url=http://search.cpan.org/~ether/WWW-Mechanize-1.73/lib/WWW/Mechanize.pm]WWW-Mechanize[/url]
[url=http://search.cpan.org/~sprout/WWW-Scripter-Plugin-JavaScript-0.008a/lib/WWW/Scripter/Plugin/JavaScript.pm]WWW-Scripter-PLugin-Javascript[/url]
[url=http://search.cpan.org/~sprout/WWW-Scripter-Plugin-Ajax-0.09/lib/WWW/Scripter/Plugin/Ajax.pm]WWW-Scripter-PLugin-Ajax[/url]
A także kilka innych modułów i bardzo elastyczne regexy.
Alleluja i do przodu:xD
Pozdro
;-)
Offline
No dobra, perl, ale jak nakarmisz serwer www pozostałymi danymi po przecinku, inkrementując w pętli licznik? Czy po prostu nie zrozumiałem Twojego postu?
Offline
Zależy od konkretnej sytuacji.
Wspomniane wyżej mody perla, to takie programistyczne przeglądarki internetowe, które ściągną stronę do zmiennej, mogą zdekodować na niej jeszcze javascripta albo ajaxa, i potem w zmiennej masz czysty html, z którego możesz sobie regexem czesać co duszyczka zapragnie.
Jeśli potem chcesz poszczególne wyczesane dane traktować jakąś pętlą i licznikiem, to droga wolna.
Perl to język programowania, wszystkie rodzaje pętli obsługuje bez żadnego problemu.
Dosyć wyjątkowe są właśnie wspomniane wyżej moduły, repo CPAN i wbudowany potężny silnik regexu, to podstawowy potencjał Perla.
W CPAN do WWW są też mody parsujące stronę poprzez np Webkita.
Offline
Time (s) | Query |
---|---|
0.00013 | SET CHARSET latin2 |
0.00006 | SET NAMES latin2 |
0.00142 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='13.58.207.196' WHERE u.id=1 |
0.00091 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '13.58.207.196', 1732848903) |
0.00049 | SELECT * FROM punbb_online WHERE logged<1732848603 |
0.00074 | DELETE FROM punbb_online WHERE ident='3.17.155.142' |
0.00072 | SELECT topic_id FROM punbb_posts WHERE id=258146 |
0.00005 | SELECT id FROM punbb_posts WHERE topic_id=25318 ORDER BY posted |
0.00086 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=25318 AND t.moved_to IS NULL |
0.00006 | SELECT search_for, replace_with FROM punbb_censoring |
0.00142 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=25318 ORDER BY p.id LIMIT 0,25 |
0.00075 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=25318 |
Total query time: 0.00761 s |