Scraping for fun and glory annotated

download Scraping for fun and glory annotated

of 34

  • date post

    04-Aug-2015
  • Category

    Internet

  • view

    163
  • download

    4

Embed Size (px)

Transcript of Scraping for fun and glory annotated

1. Scraping For Fun And Glory! BZZ BZZ 2. VOC PROGRAMA 3. Desenvolvedor Web, Mobile, Desktop Membro PugCE, ForHacker, DjangoBrasil Gosta Promoo, Ler, Chuva 4. Esse muito bom! 5. BAD HTML 6. BeaufitulSoup FireBug 7. Facinho 8. Referncias sem domnio HTTP Errors Bloqueio de acesso Cookies Autenticao Parmetros dinmicos 9. CRAWLING 10. Obrigado! 11. Scraping For Fun And Glory! BZZ BZZ Muito bom dia! Sejam bem vindos mais um Flisol. Que bom que tanta gente conseguiu acordar cedo para ver as primeiras palestras. O nome da palestra que vou ministrar Scraping for Fun and Glory; nela, nosso assunto scraping. 12. Scraping ou Web Scraping como chamamos o conjunto de tcnicas utilizadas para se extrair informao da internet, como links, imagens ou mesmo texto. O Google, por exemplo, uma empresa muito famosa que se utiliza dessa tcnica fortemente no seu processo de page ranking e indexao de contedo. 13. VOC PROGRAMA A ideia se utilizar de um programa, que far acessos aos sites que possuem a informao que voc deseja como se fosse um usurio real. Toda vez que ele acessar uma pgina, ele vai receber a informao que um usurio receberia em seu navegador, e vai buscar aquilo que importante e descartar o resto. Outra habilidade importante que um spider deve ter a capacidade de seguir links, pois eles podem lev-lo mais informao til. 14. Desenvolvedor Web, Mobile, Desktop Membro PugCE, ForHacker, DjangoBrasil Gosta Promoo, Ler, Chuva Antes de comear, gostaria de falar um pouco de mim. Meu nome Italo Maia, sou desenvolvedor a 10 anos, possuo projetos em diversas linguagens, muitos deles no github, e tive oportunidade, recentemente, de trabalhar no maior ecommerce do Brasil, onde pude aprender muito sobre o assunto, inclusive, como o scraping importante para esse tipo de negcio. Esse ano participei do ltimo python-brasil, em recife, e nele, pude ver o interesse das pessoas sobre o assunto desta palestra. Por isso resolvi compartilhar um pouco do que aprendi ao longo dos anos sobre o assunto aqui. 15. Meu primeiro contato com scraping foi a muito tempo atrs, quando um americano me pediu um servio. Ele era um apostador profissional e me pediu um programa capaz de buscar os resultados de partidas esportivas em um site e armazen-los em alguma forma estruturada fcil de ler. Lembro que no consegui atend-lo pois meu culos quebrou no dia seguinte e eu no enxergava a tela do computador no meu antigo monitor. Foi horrvel. Mas lembro tambm que achei muito interessante a ideia dele, de utilizar informao livremente disponvel na internet de forma organizada. 16. Se vocs prestaram ateno no terceiro slide, vo lembrar que eu disse que gosto de ler. Bem, eu gosto de ler e de colecionar coisas e, na internet, existem muitos sites que te permitem ler quadrinhos online, mesmo aqueles que ainda no foram publicados no brasil, como o mangafox, mangahere e mangapanda. Sou um grande f de quadrinhos e sempre tive o hbito de l-los. Esse tipo de site foi um grande achado para mim. 17. Esse muito bom! Acontece que ler quadrinhos online no to divertido quando sua Internet no to boa. A pgina pode no carregar quando voc tenta mud-la ou voc pode receber um erro de carregamento qualquer. Lembro que eu tinha Velox na poca Nesse perodo, resolvi me aventurar a fazer um aplicativo que buscasse o meu quadrinho predileto no site e baixasse o captulo que eu quisesse em um formato adequado, como cbz ou cb7. Para esse programa, utilizei apenas a bibliotecas padro do python e foi at fcil. Acredito que essa abordagem direta a forma mais simples de se realizar scraping de um site especfico do qual voc saiba exatamente a informao de que precisa. 18. O cdigo para fazer o scraping de um site de quadrinhos costuma ser bem simples, mas independente da biblioteca que voc vai utilizar, a primeira coisa a se fazer para um scraping bem sucedido, visto que voc no pretende usar uma abordagem generalista, conhecer o site. Primeiramente, lembrem-se que um scraping simula a interao de um usurio, ento vejamos como um usurio interage com a pgina. Como pode ser visto pelas setas, esse site possui vrias reas de interao com o usurio. Cada uma com um contexto especfico. Se queremos baixar quadrinhos, a parte que nos interessa a o formulrio de busca. Vamos ver como ele funciona. 19. Como faria meu amigo Yuki, a melhor forma de descobrir como algo funciona apertando o boto. Para descobrir como buscar um quadrinho no site, escrevi um texto no campo de busca e apertei no boto buscar. Notem que URL foi alterada com o valor da busca mais um path diferente. Isso nos diz que a busca utiliza um formulrio de GET e o parmetro search utilizado pela controller que responde essa requisio. J podemos codificar alguma coisa! 20. No nosso cdigo exemplo, criamos um urlopen especial, que sobrescreve o user-agent e o utilizamos para realizar uma consulta utilizando o path que descobrimos no slide anterior. No caso acima, sobrescrevemos o user-agent para deixar claro para o site com que trabalhamos que no somos um rob, mesmo lo sendo. Note que extract est vazio. Ele a funo que vamos utilizar para extrair a informao que desejamos. No caso, a lista de quadrinhos encontrada a partir de nossa palavra. 21. BAD HTML Ao trabalhar com informaes extradas de um site, voc deve estar ciente de duas coisas: 1 scripts e estilos no sero executados, a menos que voc crie o ambiente necessrio para execut- lo. PhantomJS uma boa sugesto para esses casos. 2 Se voc est trabalhando com HTML, saiba que a chance desse HTML estar mal formado altssima. Por isso, utilize bibliotecas capazes de relevar um HTML mal formado, como lxml.html ou beautifulsoup. 22. BeaufitulSoup FireBug Para o extract, vamos utilizar uma biblioteca chamada beautifulsoup e uma ferramenta chamada firebug. O firebug acredito ser conhecido da maioria. Ele permite analisar o HTML, estilos, DOM e cabealhos de uma interao com um site. Tambm te permite executar scripts em um console prprio, o que muito til. O BeautifulSoup, por sua vez, uma biblioteca para buscar informao em HTML. Ela muito fcil de usar, bem documentada e consegue trabalhar com HTML mal formado, mesmo os mais tortos no so um grande problema. 23. Facinho Na pgina com a lista de resultados que recebemos para nossa consulta, procuramos os links que direcionam para a pgina do quadrinho que desejamos ler. Visualmente, bem fcil encontrar os tais links, eles esto bem no meio da tela. Para encontrar os links no HTML, utilizamos a ferramenta de inspeo do Firebug. Clicamos nela e depois na estrutura com o link para o quadrinho; no frame do HTML, o trecho de cdigo que possui aquele link aberto. Agora basta analisar a estrutura e decidir quais os critrios de seleo para os links. como se voc tivesse que decidir quais regras CSS so necessrias para aplicar um estilo, s que com o BeautifulSoup! Dica: Voc pode utilizar o Jquery pelo console para testar se suas regras de seleo funcionam. 24. Referncias sem domnio HTTP Errors Bloqueio de acesso Cookies Autenticao Parmetros dinmicos Esse exemplo em particular muito fcil! Basta usar a classe manga_info para selecionar os links de quadrinho. O prximo passo seria seguir os links de quadrinho, encontrar a pgina de cada edio do quadrinho e para cada edio encontrar todas as imagens que compoem a edio. Em seguida, baixar e gravar a imagem de cada uma. O que foi demonstrado aqui pode ser utilizado com outras finalidades. Voc poderia, ao invs de buscar quadrinhos, buscar resultados de jogos, como queria o apostador de que falei, ou notcias sobre um assunto particular, ou preos de uma loja. As possibilidades so muitas! 25. CRAWLING Caso, o que voc precisa vasculhar um conjunto de sites procura de informao, o que voc est precisando um crawler. Crawlers so software que se utilizam de programas chamados spiders ou web spiders para extrair informao de um conjunto de sites. Spiders so programas especialistas de busca e extrao de informao, como programas de scrapers, contudo, no lidam com a parte de persistncia de informao ou gerenciamento de outros spiders. Os robs de indexao do google, por exemplo, so crawlers conhecidos. Ao contrrio de um programa de scraping, no interessante escrever seu prprio crawler sem uma ferramenta especializada para o trabalho. Uma muito famosa, o scrapy, merece sua ateno. 26. O scrapy orientado a projetos. Voc cria um projeto com a ferramenta de linha de comando do scrapy, adiciona algumas spiders a ele e j pode lev-lo para produo. bem simples. O exemplo acima, contudo, no foi criado no contexto de um projeto. O que temos ali um exemplo simples de como escrever um spider com um comportamento fixo. Ele acessa a pgina principal do blog do scrapinghub, pega todas as postagens da pgina principal e cria itens com ela. Os itens so os componentes com que o scrapy, por padro, guarda informao. O exemplo acima no usa a maioria dos recursos disponibilizados pelo scrapy, mas usa os mais importantes. Poderemos revisar tais componentes no workshop da tarde. 27. Obrigado!