Your SlideShare is downloading. ×
0
Mojo::UserAgent
Mojo::UserAgent
Mojo::UserAgent
Mojo::UserAgent
Mojo::UserAgent
Mojo::UserAgent
Mojo::UserAgent
Mojo::UserAgent
Mojo::UserAgent
Mojo::UserAgent
Mojo::UserAgent
Mojo::UserAgent
Mojo::UserAgent
Mojo::UserAgent
Mojo::UserAgent
Mojo::UserAgent
Mojo::UserAgent
Mojo::UserAgent
Mojo::UserAgent
Mojo::UserAgent
Mojo::UserAgent
Mojo::UserAgent
Mojo::UserAgent
Mojo::UserAgent
Mojo::UserAgent
Mojo::UserAgent
Mojo::UserAgent
Mojo::UserAgent
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Mojo::UserAgent

1,490

Published on

*GERMAN* …

*GERMAN*

Einfuehrung in Mojo::UserAgent (und Mojo::DOM)

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,490
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
14
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Einf¨hrung u Mojo::UserAgent HTML/JSON-Verarbeitung auf der Kommandozeile Mojo::UserAgentparallele HTTP-Anfragen, Kommandozeilen-Verwendung Uwe V¨lker o XING AG 05.03.2012 Uwe V¨lker o Mojo::UserAgent
  • 2. Einf¨hrung u Mojo::UserAgent HTML/JSON-Verarbeitung auf der Kommandozeile1 Einf¨hrung u2 Mojo::UserAgent3 HTML/JSON-Verarbeitung4 auf der Kommandozeile Uwe V¨lker o Mojo::UserAgent
  • 3. Einf¨hrung u HTTP-Requests in Perl? Mojo::UserAgent parallele HTTP-Requests HTML/JSON-Verarbeitung Mojo::UserAgent auf der Kommandozeile1 Einf¨hrung u HTTP-Requests in Perl? parallele HTTP-Requests Mojo::UserAgent2 Mojo::UserAgent3 HTML/JSON-Verarbeitung4 auf der Kommandozeile Uwe V¨lker o Mojo::UserAgent
  • 4. Einf¨hrung u HTTP-Requests in Perl? Mojo::UserAgent parallele HTTP-Requests HTML/JSON-Verarbeitung Mojo::UserAgent auf der KommandozeileHTTP-Requests in Perl? LWP::UserAgent LWP::Simple Uwe V¨lker o Mojo::UserAgent
  • 5. Einf¨hrung u HTTP-Requests in Perl? Mojo::UserAgent parallele HTTP-Requests HTML/JSON-Verarbeitung Mojo::UserAgent auf der KommandozeileHTTP-Requests in Perl? LWP::UserAgent LWP::Simple HTTP::Lite HTTP::Client (nur GET!) Uwe V¨lker o Mojo::UserAgent
  • 6. Einf¨hrung u HTTP-Requests in Perl? Mojo::UserAgent parallele HTTP-Requests HTML/JSON-Verarbeitung Mojo::UserAgent auf der Kommandozeileparallele 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. Einf¨hrung u HTTP-Requests in Perl? Mojo::UserAgent parallele HTTP-Requests HTML/JSON-Verarbeitung Mojo::UserAgent auf der KommandozeileMojo::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. Einf¨hrung u ¨ Uberblick Mojo::UserAgent non-blocking HTML/JSON-Verarbeitung parallele Anfragen auf der Kommandozeile1 Einf¨hrung u2 Mojo::UserAgent ¨ Uberblick non-blocking parallele Anfragen3 HTML/JSON-Verarbeitung4 auf der Kommandozeile Uwe V¨lker o Mojo::UserAgent
  • 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. Einf¨hrung u ¨ Uberblick Mojo::UserAgent non-blocking HTML/JSON-Verarbeitung parallele Anfragen auf der KommandozeileHTTP-Methoden get post, post form put delete head Uwe V¨lker o Mojo::UserAgent
  • 11. Einf¨hrung u ¨ Uberblick Mojo::UserAgent non-blocking HTML/JSON-Verarbeitung parallele Anfragen auf der Kommandozeiletransaction-Objekt req - request-Objekt res - response-Objekt Uwe V¨lker o Mojo::UserAgent
  • 12. Einf¨hrung u ¨ Uberblick Mojo::UserAgent non-blocking HTML/JSON-Verarbeitung parallele Anfragen auf der Kommandozeiletransaction-Objekt req - request-Objekt res - response-Objekt local address, local port remote address, remote port Uwe V¨lker o Mojo::UserAgent
  • 13. Einf¨hrung u ¨ Uberblick Mojo::UserAgent non-blocking HTML/JSON-Verarbeitung parallele Anfragen auf der Kommandozeilenon-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. Einf¨hrung u ¨ Uberblick Mojo::UserAgent non-blocking HTML/JSON-Verarbeitung parallele Anfragen auf der KommandozeileMojo::IOLoop minimalistic IO loop building block for non-blocking TCP clients and servers start, stop Uwe V¨lker o Mojo::UserAgent
  • 15. Einf¨hrung u ¨ Uberblick Mojo::UserAgent non-blocking HTML/JSON-Verarbeitung parallele Anfragen auf der Kommandozeileparallele 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. Einf¨hrung u ¨ Uberblick Mojo::UserAgent non-blocking HTML/JSON-Verarbeitung parallele Anfragen auf der KommandozeileMojo::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. Einf¨hrung u Mojo::UserAgent Mojo::DOM HTML/JSON-Verarbeitung Mojo::JSON::Pointer auf der Kommandozeile1 Einf¨hrung u2 Mojo::UserAgent3 HTML/JSON-Verarbeitung Mojo::DOM Mojo::JSON::Pointer4 auf der Kommandozeile Uwe V¨lker o Mojo::UserAgent
  • 18. Einf¨hrung u Mojo::UserAgent Mojo::DOM HTML/JSON-Verarbeitung Mojo::JSON::Pointer auf der KommandozeileMojo::DOM HTML5/XML DOM-Parser klingt wie HTML::TreeBuilder? Uwe V¨lker o Mojo::UserAgent
  • 19. Einf¨hrung u Mojo::UserAgent Mojo::DOM HTML/JSON-Verarbeitung Mojo::JSON::Pointer auf der KommandozeileMojo::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. Einf¨hrung u Mojo::UserAgent Mojo::DOM HTML/JSON-Verarbeitung Mojo::JSON::Pointer auf der KommandozeileMojo::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. Einf¨hrung u Mojo::UserAgent Mojo::DOM HTML/JSON-Verarbeitung Mojo::JSON::Pointer auf der KommandozeileMojo::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. Einf¨hrung u Mojo::UserAgent Mojo::DOM HTML/JSON-Verarbeitung Mojo::JSON::Pointer auf der KommandozeileMojo::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. Einf¨hrung u Mojo::UserAgent Mojo::DOM HTML/JSON-Verarbeitung Mojo::JSON::Pointer auf der KommandozeileMojo::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. Einf¨hrung u mojo get Mojo::UserAgent CSS-Selektoren HTML/JSON-Verarbeitung JSON-Pointer auf der Kommandozeile1 Einf¨hrung u2 Mojo::UserAgent3 HTML/JSON-Verarbeitung4 auf der Kommandozeile mojo get CSS-Selektoren JSON-Pointer Uwe V¨lker o Mojo::UserAgent
  • 25. Einf¨hrung u mojo get Mojo::UserAgent CSS-Selektoren HTML/JSON-Verarbeitung JSON-Pointer auf der Kommandozeilemojo 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. Einf¨hrung u mojo get Mojo::UserAgent CSS-Selektoren HTML/JSON-Verarbeitung JSON-Pointer auf der KommandozeileCSS-Selektoren zusaetzliche Parameter nach der URL Selektor(en) Kommandos (text, all, attr, id) Uwe V¨lker o Mojo::UserAgent
  • 27. Einf¨hrung u mojo get Mojo::UserAgent CSS-Selektoren HTML/JSON-Verarbeitung JSON-Pointer auf der KommandozeileJSON-Pointer Content-Type muss JSON sein / ... / ... Hash-Key oder Array-Index Uwe V¨lker o Mojo::UserAgent
  • 28. Einf¨hrung u mojo get Mojo::UserAgent CSS-Selektoren HTML/JSON-Verarbeitung JSON-Pointer auf der KommandozeileMojo::UserAgent Fragen? http://groups.google.com/group/mojolicious #mojo on irc.perl.org Einfach ausprobieren! Uwe V¨lker o Mojo::UserAgent

×