Web crawler

2,773 views
2,707 views

Published on

Palestra sobre Web Crawler.

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

No Downloads
Views
Total views
2,773
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
68
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Web crawler

  1. 1. mantovani@perl.org.br São Paulo Perl Monger Yet Another Perl Conference Web Crawler Daniel de O. Mantovani Aware
  2. 2. mantovani@perl.org.br São Paulo Perl Monger Web Crawler Web Crawler é um software que faz uma navegação automatizada na Web.
  3. 3. mantovani@perl.org.br São Paulo Perl Monger Mercado O Google usa Web Crawler, sem esse conceito não tem Google.
  4. 4. mantovani@perl.org.br São Paulo Perl Monger Usabilidade up-to-date
  5. 5. mantovani@perl.org.br São Paulo Perl Monger Outras Empresas JáCotei Buscapé Bing Yahoo Zura Aware
  6. 6. mantovani@perl.org.br São Paulo Perl Monger Perl Maturidade CPAN Cultura Comunidade
  7. 7. mantovani@perl.org.br São Paulo Perl Monger Maturidade 23 anos de evolução
  8. 8. mantovani@perl.org.br São Paulo Perl Monger CPAN 18588 módulos e enquanto eu falo, a comunidade Perl produz Perl
  9. 9. mantovani@perl.org.br São Paulo Perl Monger Cultura TIMTOWTDI “There Is More Than One Way To Do It”
  10. 10. mantovani@perl.org.br São Paulo Perl Monger Comunidade IRC irc.perl.org #sao-paulo.pm #rio-pm … Lista sao-paulo.pm.org/lista rio.pm.org/lista.pl
  11. 11. mantovani@perl.org.br São Paulo Perl Monger Antes Regular Expression Caos Inferno Manutenção ? Não existe isso
  12. 12. mantovani@perl.org.br São Paulo Perl Monger From Hell while ($string =~ m{<a class="EsquerdaMenu" href="(ListaProdutos.asp?IDLoja=d+&Y=d+(?:&cch=)? &IDCategoria=d+)".*?>(.+?)</a>}sig) { my $link = 'http://www.foo.com.br/sistema/'.$1; my $cat = $2; $link =~ s/Y=d+/Y=/io; if($cat !~ m/Novidades/io) { push(@{$spider->{linhas_cfg}}, $spider- >dicionario($spider->retira_html($cat)) . ";$link"); } }
  13. 13. mantovani@perl.org.br São Paulo Perl Monger O código anterior não é code-golf É um código usado num ambiente real de produção. Não me perguntem o que o código anterior faz
  14. 14. mantovani@perl.org.br São Paulo Perl Monger Evolução HTML::Element->HTML::TreeBuilder- >HTML::TreeBuilder::XPath
  15. 15. mantovani@perl.org.br São Paulo Perl Monger XPath XPath é usado para navegar através de elementos e atributos em um documento XML
  16. 16. mantovani@perl.org.br São Paulo Perl Monger Exemplo //div[@class=”menu”][1]
  17. 17. mantovani@perl.org.br São Paulo Perl Monger Termologia Nodes Items
  18. 18. mantovani@perl.org.br São Paulo Perl Monger Relacionamento Parent Children Siblings Ancestors Descendants
  19. 19. mantovani@perl.org.br São Paulo Perl Monger Parent Cada elemento e atributo tem um parent. <book> <title>Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book> O elemento book é pai do title,author, year e price.
  20. 20. mantovani@perl.org.br São Paulo Perl Monger Children Children pode ter zero, one ou mais childrens. <book> <title>Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book> O elemento, title, author, year e price são todas childrens do elemento book.
  21. 21. mantovani@perl.org.br São Paulo Perl Monger Siblings São nodes que tem o mesmo elemento. <book> <title>Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book> O node title, author, year e price são todos siblings.
  22. 22. mantovani@perl.org.br São Paulo Perl Monger Ancestors São todos os antepassados do elemento. <bookstore> <book> <title>Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book> </bookstore> O ancestors do title é o book e o bookstore.
  23. 23. mantovani@perl.org.br São Paulo Perl Monger Descendants São todos os descendentes do elemento. <bookstore> <book> <title>Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book> </bookstore> Os descendants do elemento bookstore são book, e todos irmãos do title. (e o title)
  24. 24. mantovani@perl.org.br São Paulo Perl Monger WWW::Mechanize Um módulo Perl feito para automatizar as ações de um browser. Ele cuida de todos os os métodos HTTP, ele cuida de até um certo nível de parsing como links e imagens, suporte SSL, cookies, permite customizar o cabeçalho HTTP, te redireciona automaticamente, Proxy e autentificação HTTP. Entre outros.
  25. 25. mantovani@perl.org.br São Paulo Perl Monger Mechanize ;) use WWW::Mechanize; my $mech = WWW::Mechanize->new( agent_alias => 'Linux Mozilla', stack_depth => 5 ); $mech->get($url); print $mech->content;
  26. 26. mantovani@perl.org.br São Paulo Perl Monger HTML::TreeBuilder::XPath my $tree = HTML::TreeBuilder::XPath->new_from_content($content); my $menu = $xpath->findnodes('//ul[@class="sMenu"]')->[0]; my $sub_menus = $menu->findnodes('.//ul');
  27. 27. mantovani@perl.org.br São Paulo Perl Monger Firebug Uma ótima ferramenta
  28. 28. mantovani@perl.org.br São Paulo Perl Monger Problemas JavaScript Captcha Bloqueio de IP HTML que não é HTML
  29. 29. mantovani@perl.org.br São Paulo Perl Monger Captcha use Image::OCR::Tesseract 'get_ocr'; my $image = './hi.jpg'; my $text = get_ocr($image);
  30. 30. mantovani@perl.org.br São Paulo Perl Monger Imagemagick resize
  31. 31. mantovani@perl.org.br São Paulo Perl Monger Requisições Live HTTP Header
  32. 32. mantovani@perl.org.br São Paulo Perl Monger Agradecimento Daniel Ruoso Eden Cardim Gabriel Vieira

×