Introdução ao

E Visualização de Dados e esses paranauês do PI IV aí

ago/2015

Web Crawling

Vinicius de Carvalho | [TGL] Dogg

Vinicius de Carvalho

• tgl_dogg@outlook.com

• github.com/tgl-dogg

• facebook.com/TGL_Dogg

Foto por Marcelo Hashimoto
(sdds Hashimoto sz)

[TGL] Dogg      |      Vini Dogg LL

Objetivo

Uébi o quê!?

(uébi crauler)

  • Introdução ao Web Crawling
  • Introdução à Persistência de Dados
  • Introdução à Visualização de Dados
  • Dicas e truques na hora de crawlear
  • Workshop pra fazer origami com o seu papel de trouxa

(perdi o jogo)

  • Processo de crawling
  • Parsing (não tem nada a ver com parças)
  • Banco de Dados
  • Visualização de Dados
  • Dificuldades encontradas

 

Vamos falar de

(coisa boa, vamos falar da nova TekPix)

Fazer um Web Crawler é mais fácil do
que pronunciar "web crawler"!

 

(bem, não exatamente)

 

Visão Geral

Web Crawler

Web Crawler!?

https://twitter.com/felipesmith1618/status/570256275159830528

http://produto.mercadolivre.com.br/MLB-683967753-quadro-tela-painel-mona-cat-romero-britto-_JM

Web Crawler!

http://www.shopbritto.com/

http://www.shopbritto.com/collections/special-offers

Web Crawler-san

  • Entra no link
  • Baixa a página
  • Procurar outros links
  • Encontra outros links
  • Entra nos outros links
  • Baixa as outras páginas
  • Procura mais links
  • Encontra mais links
  • Entra nos novos links
  • Baixa as novas páginas
  • Procura novos links...

Determinando Regras

Expressões Regulares!!1!1!onze!1!1!

Mas não se esqueça dos filtros! (allow, deny, etc.)

Obtendo dados

Expressões Regulares!!1!1!onze!1!1!

Só que não. 

http://migre.me/rlK2z

Obtendo dados

XPath é o cara!

developers = response.xpath(
'//div[@class="details_block"]/a
[contains(@href, "http://store.steampowered.com/search/?developer")]
/text()')

Parando o Crawler

  • Via interrupção no terminal (Ctrl + C)
     
  • Determinando o número máximo de páginas visitadas por dia (o site pode ter um limite!)
     
  • Botão de parada (um bem grande e vermelho escrito "parar" deve servir)
     
  • Visitando todos os links possíveis (cabô :c)
     
  • Bugs (evitem esse)

Bibliotecas

Python:

  • Scrappy
  • Selenium
  • Beautiful Soup

 

 

Fazer na raça não é tão difícil!

Persistindo Dados

Quais dados eu preciso?

  • Lista de obras do Romero Britto?
  • Preço das obras do Romero Britto?
  • Número de citações ao nome do Romero Britto?
  • Número de vítimas do furacão Katrina?
  • Dados sobre a vida de Felipe Smith?

 

É você quem determina os dados dos quais precisa

Tá, mas, o que salvar?

Três tipos de coisas são essenciais no seu banco de dados:

 

  • Tudo,
  • Tudo &
  • Tudo e mais um pouco!

Deixe a meta de dados em aberto e, quando atingir a meta, dobre a meta!

Cuide do seu banco! ♥

  • Menos não é mais; mais é mais! Você nunca sabe quando pode achar utilidade para algum dado.
     
  • Normalize seu banco de dados! Você vai ganhar eficiência em armazenamento e processamento de dados.
     
  • Crie todo índice possível no seu banco, vai te poupar muito tempo num futuro próximo ;)!

Qual banco escolher?

Qualquer um!

 

(não, sério, qualquer um mesmo)

Visualizando Dados

O que é?

Abstrair uma série de dados de modo a facilitar a interpretação do visualizador

http://www.statmethods.net/graphs/pie.html

http://www.snapsurveys.com/support/worksheets/putting-counts-percentages-bar-chart/

Visualizações são legais!

https://github.com/pviotti/osm-viz

E possíveis!

http://www.123rf.com/photo_17982993_social-media-concept-in-word-tag-cloud-on-white-background.html

Tipos de Visualizações

  • Gráficos de Pizza
  • Gráficos de Barra
  • Gráficos de... gráficos!?
  • Tag Cloud
  • Mapas de Calor
  • Network

 

Qualquer pesquisinha na internet retorna um MONTE de técnicas criativas para visualizar dados!

Conselho

http://elidebemcomavida.blogspot.com.br/2013/09/lingua-portuguesa-e-algumas-expressoes.html

Dicas ;)

Escolha um bom site

Crawleie um site grande, como a wikipedia.

 

Ou o facebook.

 

Ou o que seja.

 

Lembre-se: mais é mais!

Crawlers são independentes!

Você pode deixar o seu crawler rodando durante a noite, durante o trabalho, durante a aula, durante o banho, durante a visita de parentes chatos, etc...
 

...mas tome cuidado com alguns casos especiais.

 

  • Falta de memória ram
  • Falta de espaço em disco
  • URLs "surpresa" 
  • Exceções no seu código fonte & outros bugs

Sério, pra que isso!?

store.steampowered.com/app/100410/www.nevercenter.com/www.nevercenter.com/www.nevercenter.com/www.nevercenter.com/www.nevercenter.com/www.nevercenter.com/www.nevercenter.com/www.nevercenter.com/camerabag

Crawlers são fáceis!

Tire dois dias do seu feriado e voilà, você tem um crawler.

 

Não, sério, dá pra fazer em dois dias, na moralzinha.

 

A parte de deixar o crawler rodando é a mais fácil do PI IV, e uma das mais divertidas também.

Projete o seu banco de dados

Modelamento de dados é uma das partes mais chatas (implementar o banco é sempre mais legal), mas é muito importante para evitar falhas no projeto.

 

Uma falha simples no seu modelamento e você pode perder todas as informações crawleadas e ter que começar o processo todo de novo!

Faça Backup

Faça backup. Ponto.

Considerações Finais

Dê um passo de cada vez

  • Visite algumas páginas do seu site para entender como ele está estruturado
  • Projete o seu crawler sem persistir dados para garantir que ele vai visitar as páginas sem problemas
  • Modele e implemente o seu banco de dados
  • Crawleie uma pequena amostra do seu site
  • Projete suas visualizações de dados de acordo com essa pequena amostra

 

Se tudo der certo, faça em larga escala depois!

Deus ajuda quem cedo

http://pt-br.chavesdooito.wikia.com/wiki/Seu_Madruga

Perguntas?

Bom crawling!

Made with Slides.com