Successfully reported this slideshow.

Mojo::UserAgent

1

Share

Loading in …3
×
1 of 28
1 of 28

More Related Content

Related Books

Free with a 14 day trial from Scribd

See all

Mojo::UserAgent

  1. 1. Einf¨hrung u Mojo::UserAgent HTML/JSON-Verarbeitung auf der Kommandozeile Mojo::UserAgent parallele HTTP-Anfragen, Kommandozeilen-Verwendung Uwe V¨lker o XING AG 05.03.2012 Uwe V¨lker o Mojo::UserAgent
  2. 2. Einf¨hrung u Mojo::UserAgent HTML/JSON-Verarbeitung auf der Kommandozeile 1 Einf¨hrung u 2 Mojo::UserAgent 3 HTML/JSON-Verarbeitung 4 auf der Kommandozeile Uwe V¨lker o Mojo::UserAgent
  3. 3. Einf¨hrung u HTTP-Requests in Perl? Mojo::UserAgent parallele HTTP-Requests HTML/JSON-Verarbeitung Mojo::UserAgent auf der Kommandozeile 1 Einf¨hrung u HTTP-Requests in Perl? parallele HTTP-Requests Mojo::UserAgent 2 Mojo::UserAgent 3 HTML/JSON-Verarbeitung 4 auf der Kommandozeile Uwe V¨lker o Mojo::UserAgent
  4. 4. Einf¨hrung u HTTP-Requests in Perl? Mojo::UserAgent parallele HTTP-Requests HTML/JSON-Verarbeitung Mojo::UserAgent auf der Kommandozeile HTTP-Requests in Perl? LWP::UserAgent LWP::Simple Uwe V¨lker o Mojo::UserAgent
  5. 5. Einf¨hrung u HTTP-Requests in Perl? Mojo::UserAgent parallele HTTP-Requests HTML/JSON-Verarbeitung Mojo::UserAgent auf der Kommandozeile HTTP-Requests in Perl? LWP::UserAgent LWP::Simple HTTP::Lite HTTP::Client (nur GET!) Uwe V¨lker o Mojo::UserAgent
  6. 6. Einf¨hrung u HTTP-Requests in Perl? Mojo::UserAgent parallele HTTP-Requests HTML/JSON-Verarbeitung Mojo::UserAgent auf der Kommandozeile parallele HTTP-Requests LWP::Parallel::UserAgent (sehr alt - 2004) HTTP::Async AnyEvent::HTTP, POE::Component::Client::HTTP WWW::Curl::Multi Uwe V¨lker o Mojo::UserAgent
  7. 7. Einf¨hrung u HTTP-Requests in Perl? Mojo::UserAgent parallele HTTP-Requests HTML/JSON-Verarbeitung Mojo::UserAgent auf der Kommandozeile Mojo::UserAgent Wer sich nicht daran st¨rt, Mojolicious zu installieren, bekommt o einen m¨chtigen HTTP-Klienten: a asynchron HTTP 1.1 WebSocket-Unterst¨tzung u Uwe V¨lker o Mojo::UserAgent
  8. 8. Einf¨hrung u ¨ Uberblick Mojo::UserAgent non-blocking HTML/JSON-Verarbeitung parallele Anfragen auf der Kommandozeile 1 Einf¨hrung u 2 Mojo::UserAgent ¨ Uberblick non-blocking parallele Anfragen 3 HTML/JSON-Verarbeitung 4 auf der Kommandozeile Uwe V¨lker o Mojo::UserAgent
  9. 9. Einf¨hrung u ¨ Uberblick Mojo::UserAgent non-blocking HTML/JSON-Verarbeitung parallele Anfragen auf der Kommandozeile ¨ Uberblick #! / u s r / b i n / p e r l use s t r i c t ; use w a r n i n g s ; use Mojo : : U s e r A g e n t ; my $ua=Mojo : : UserAgent −>new ( m a x r e d i r e c t s =>5); my $ t x=$ua−>g e t ( ’ h t t p : / /www. p e r l w o r k s h o p . de / ’ ) ; p r i n t $tx −>r e s −>body ; Uwe V¨lker o Mojo::UserAgent
  10. 10. Einf¨hrung u ¨ Uberblick Mojo::UserAgent non-blocking HTML/JSON-Verarbeitung parallele Anfragen auf der Kommandozeile HTTP-Methoden get post, post form put delete head Uwe V¨lker o Mojo::UserAgent
  11. 11. Einf¨hrung u ¨ Uberblick Mojo::UserAgent non-blocking HTML/JSON-Verarbeitung parallele Anfragen auf der Kommandozeile transaction-Objekt req - request-Objekt res - response-Objekt Uwe V¨lker o Mojo::UserAgent
  12. 12. Einf¨hrung u ¨ Uberblick Mojo::UserAgent non-blocking HTML/JSON-Verarbeitung parallele Anfragen auf der Kommandozeile transaction-Objekt req - request-Objekt res - response-Objekt local address, local port remote address, remote port Uwe V¨lker o Mojo::UserAgent
  13. 13. Einf¨hrung u ¨ Uberblick Mojo::UserAgent non-blocking HTML/JSON-Verarbeitung parallele Anfragen auf der Kommandozeile non-blocking $ua−>g e t ( ’ h t t p : / / p e r l . o r g ’ => sub { my ( $ua , $ t x ) = @ ; p r i n t $tx −>r e s −>body ; Mojo : : IOLoop−>s t o p ; }); Mojo : : IOLoop−>s t a r t ; Uwe V¨lker o Mojo::UserAgent
  14. 14. Einf¨hrung u ¨ Uberblick Mojo::UserAgent non-blocking HTML/JSON-Verarbeitung parallele Anfragen auf der Kommandozeile Mojo::IOLoop minimalistic IO loop building block for non-blocking TCP clients and servers start, stop Uwe V¨lker o Mojo::UserAgent
  15. 15. Einf¨hrung u ¨ Uberblick Mojo::UserAgent non-blocking HTML/JSON-Verarbeitung parallele Anfragen auf der Kommandozeile parallele Anfragen my $ d e l a y = Mojo : : IOLoop−>d e l a y ; f o r e a c h my $ u r l ( ’ m o j o l i c i o . u s ’ , ’ cpan . o r g ’ ) { $ d e l a y −>b e g i n ; $ua−>g e t ( $ u r l => sub { my ( $ua , $ t x ) = @ ; $ d e l a y −>end ( $tx −>r e s −>dom−>a t ( ’ t i t l e ’)−> t e x t ) ; }); } my @ t i t l e s = $ d e l a y −>wait ; Uwe V¨lker o Mojo::UserAgent
  16. 16. Einf¨hrung u ¨ Uberblick Mojo::UserAgent non-blocking HTML/JSON-Verarbeitung parallele Anfragen auf der Kommandozeile Mojo::IOLoop::Delay synchronize events begin - increase event counter end - decrease event counter (and set return values) wait - wait for ”finish” event (and return results) Uwe V¨lker o Mojo::UserAgent
  17. 17. Einf¨hrung u Mojo::UserAgent Mojo::DOM HTML/JSON-Verarbeitung Mojo::JSON::Pointer auf der Kommandozeile 1 Einf¨hrung u 2 Mojo::UserAgent 3 HTML/JSON-Verarbeitung Mojo::DOM Mojo::JSON::Pointer 4 auf der Kommandozeile Uwe V¨lker o Mojo::UserAgent
  18. 18. Einf¨hrung u Mojo::UserAgent Mojo::DOM HTML/JSON-Verarbeitung Mojo::JSON::Pointer auf der Kommandozeile Mojo::DOM HTML5/XML DOM-Parser klingt wie HTML::TreeBuilder? Uwe V¨lker o Mojo::UserAgent
  19. 19. Einf¨hrung u Mojo::UserAgent Mojo::DOM HTML/JSON-Verarbeitung Mojo::JSON::Pointer auf der Kommandozeile Mojo::DOM HTML5/XML DOM-Parser klingt wie HTML::TreeBuilder? Unterst¨tzung fuer CSS3-Selektoren u mehr wie HTML::TreeBuilder::XPath Uwe V¨lker o Mojo::UserAgent
  20. 20. Einf¨hrung u Mojo::UserAgent Mojo::DOM HTML/JSON-Verarbeitung Mojo::JSON::Pointer auf der Kommandozeile Mojo::DOM use Mojo : :DOM; my $dom = Mojo : : DOM −>new ( ’<d i v i d =”a”>A</d i v ><d i v i d =”b”>B</d i v > ’ ) ; p r i n t $dom−>a t ( ’#b ’)−> t e x t ; $dom−>d i v −>[1]−> r e p l a c e c o n t e n t ( ’ f o o ’ ) ; p r i n t $dom ; # <d i v i d =”a”>A</d i v ><d i v i d =”b”>foo </d i v > Uwe V¨lker o Mojo::UserAgent
  21. 21. Einf¨hrung u Mojo::UserAgent Mojo::DOM HTML/JSON-Verarbeitung Mojo::JSON::Pointer auf der Kommandozeile Mojo::DOM new/parse - DOM aufbauen Suche: at, find Bewegung: root, children, parent, div, p (Tags) Extraktion: attr, text Manipulation: append, prepend, replace Uwe V¨lker o Mojo::UserAgent
  22. 22. Einf¨hrung u Mojo::UserAgent Mojo::DOM HTML/JSON-Verarbeitung Mojo::JSON::Pointer auf der Kommandozeile Mojo::JSON::Pointer use Mojo : : JSON : : P o i n t e r ; my $p = Mojo : : JSON : : P o i n t e r −>new ; s a y $p−>g e t ( { f o o => [ 2 3 , ’ b a r ’ ] } , ’ / f o o /1 ’ ) ; i f ( $p−>c o n t a i n s ( { f o o => [ 2 3 , ’ b a r ’ ] } , ’ / f o o ’ ) ) { s a y ’ C o n t a i n s ”/ f o o ” . ’ ; } Uwe V¨lker o Mojo::UserAgent
  23. 23. Einf¨hrung u Mojo::UserAgent Mojo::DOM HTML/JSON-Verarbeitung Mojo::JSON::Pointer auf der Kommandozeile Mojo::JSON::Pointer http://tools.ietf.org/html/ draft-pbryan-zyp-json-pointer-02 get - extract parts of the data structure contains - check if a sub structure is present Uwe V¨lker o Mojo::UserAgent
  24. 24. Einf¨hrung u mojo get Mojo::UserAgent CSS-Selektoren HTML/JSON-Verarbeitung JSON-Pointer auf der Kommandozeile 1 Einf¨hrung u 2 Mojo::UserAgent 3 HTML/JSON-Verarbeitung 4 auf der Kommandozeile mojo get CSS-Selektoren JSON-Pointer Uwe V¨lker o Mojo::UserAgent
  25. 25. Einf¨hrung u mojo get Mojo::UserAgent CSS-Selektoren HTML/JSON-Verarbeitung JSON-Pointer auf der Kommandozeile mojo get mojo get -r perl.org mojo get -M POST -c body example.org mojo get -r perl.org ’#short lists .list p a’ 0 mojo get http://search.twitter.com/search.json /error Uwe V¨lker o Mojo::UserAgent
  26. 26. Einf¨hrung u mojo get Mojo::UserAgent CSS-Selektoren HTML/JSON-Verarbeitung JSON-Pointer auf der Kommandozeile CSS-Selektoren zusaetzliche Parameter nach der URL Selektor(en) Kommandos (text, all, attr, id) Uwe V¨lker o Mojo::UserAgent
  27. 27. Einf¨hrung u mojo get Mojo::UserAgent CSS-Selektoren HTML/JSON-Verarbeitung JSON-Pointer auf der Kommandozeile JSON-Pointer Content-Type muss JSON sein / ... / ... Hash-Key oder Array-Index Uwe V¨lker o Mojo::UserAgent
  28. 28. Einf¨hrung u mojo get Mojo::UserAgent CSS-Selektoren HTML/JSON-Verarbeitung JSON-Pointer auf der Kommandozeile Mojo::UserAgent Fragen? http://groups.google.com/group/mojolicious #mojo on irc.perl.org Einfach ausprobieren! Uwe V¨lker o Mojo::UserAgent

×