Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

Web Scraping
Estrutura de Dados I
Nada de novo aqui
Já foi conhecido como
Screen scraping
Data mining
Web harvesting (algo como colheita)
Esta Foto de Autor Desconhecido está licenciado em CC BY-SA
Bots
Os programas de web scraping são assim ocasionalmente chamados
Esta Foto de Autor Desconhecido está licenciado em CC BY-SA
O que é?
É uma maneira de coletar dados da web que não seja
Por um API
Por uma pessoa (obviamente)
Programas que verificam a web, lendo documentos (comumente HTML) e extraem dados do mesmo
ENGLOBA um CONJUNTO de TÉCNICAS, ferramentas e tecnologias
SCRAPING = raspagem
CRAWLING = rastreamento
Por que?
Utilizar páginas web interagindo por meio de um monitor deixa você limitado
Já os scrapers são úteis para processar uma grande quantidade de dados, invés de observar uma página de cada vez
Serviço de busca tradicional
A busca em sites de pesquisa, como Google pode ver o conteúdo da página e determinar correspondência com sua pesquisa
Busca mais detalhadas como “quando é a melhor hora de comprar um Playstation 4” talvez ele não te ofereça
Web Scraping
Já um web scraping poderia varrer diversos sites verificando esses valores e apontando qual a melhor hora de comprar seu Playstation 4
Um pausa para falarmos que o Trivago compara os melhores preços tudo em um só lugar
Esta Foto de Autor Desconhecido está licenciado em CC BY-SA
Tá mas eu poderia usar uma API
Sim, talvez e não
NÃO porque os sites podem não reunir informações que tu precisa por meio de sua API
NÃO porque a fonte pode não ter capacidade técnica de fornecer uma API
SIM se o seu problema for atendido completamente por uma API
TALVEZ se a API existir e se ela prover o que tu precisa
Aí que está o pulo do gato do scraping
Esta Foto de Autor Desconhecido está licenciado em CC BY-NC
Se um browser pode ler um conteúdo, um script também pode
Logo, se um script pode acessar, um banco de dados pode armazenar
Logo, se você pode armazenar, você pode fazer qualquer coisa
Aplicações extremamente úteis
Precisão de mercado
Tradução de linguagem de máquina
Diagnósticos 
ENFIM ...
Olha a maluquice
http://www.wefeelfine.org/mission.html
Este site faz scraping de blogs pegando frases como “ESTOU ME SENTINDO, SINTO, ETC”
Eles pegam essas informações mais populares para dizer “COMO O MUNDO ESTÁ SE SENTINDO diariamente
Esta Foto de Autor Desconhecido está licenciado em CC BY
Construindo SCRAPINGs
Passos de um scraping
Recuperar dados HTML de um domínio
Analisar os dados para informações de destino
Armazenar as informações do alvo
Acessar outra página e repetir o processo (opcional)
Entendo o começo
Esta Foto de Autor Desconhecido está licenciado em CC BY-SA
Mundo com os browsers
Mundo com os browsers
Requisição GET
Esta Foto de Autor Desconhecido está licenciado em CC BY-SA
Esta Foto de Autor Desconhecido está licenciado em CC BY-SA
Acesso
Domínio
IP
Pacote
Conteúdo
Acessando a página com Python
Explicar que a requisição sempre devolve esse HMTL, quando o browser encontra um referência a imagem ou arquivo ele faz um nova requisição para aquele recurso
19
BeatifulSoap
Antes usamos a biblioteca padrão do Python3
Já essa biblioteca tem mais features
O nome vem de um poema de Alice no pais das Maravilhas
"Linda Sopa, tão rica e verde,
Esperando em uma sopeira quente!
Para tal guloseima não iria parar? 
Sopa da noite, bela Sopa!”
Esta Foto de Autor Desconhecido está licenciado em CC BY-ND
A analogia com Alice é a seguinte:
O beatifulSoap tenta organizar o absurdo
Ajuda formatar e organizar os elementos “WEB” corrigindo problemas
Tudo é apresentado como objetos Python
Várias pesquisas com BeatifulSoap
bsObj.findAll(text=“UNOESC")
.findAll("span", {"class":"green", "class":"red"}) 
.findAll({"h1","h2","h3","h4","h5","h6"})
.findAll("img", {"src":re.compile("\.\.\/img\/gifts/img.*\.jpg")}) 
 
 
Outras possibilidades
Uma página HTML é uma árvore
Possibilidades
Pegar células específicas de uma tabela / tabelas
Pegar menus inteiros (mapa de navegação)
Pegar conteúdo, título, subtítulo, etc, todos relacionados
 ... O caminho contrário (de um nó filho para um pai) também é possível (.parente)
Iniciando o Crawl
Web crawlers rastream a web por meio de recursão
Acessam uma URL, analisam seu conteúdo e parte para outra URL
Assim infinitamente	
ATENÇÃO
Só porque você PODE rastrear a WEB não quer dizer que você DEVA
Deve estar consciente de sua largura de banda e se tem maneira mais rápida de agilizar o acesso no servidor destino
Exemplo Wikipedia
A wikipedia tem ~2.500 hits por segundo
Como o volume de tráfego é muito alto seu crawler poderia ser até imperceptível/insignificante para eles
Mas cuidado, porque pode causar, em alguns casos, uma sobrecarga no servidor
Pegando os links de uma página
Pegando artigos e novas listas
O corpo principal do programa começa com a configuração de uma lista de tags de links de artigos
variável links) para a lista de links na página inicial: https://en.wikipedia.org/wiki/
Kevin_Bacon. Em seguida, ele entra em um loop, encontrando uma tag de link de artigo aleatório na página,
extrair o atributo href dele, imprimir a página e obter uma nova lista de links
da URL extraída.
33
Crawling em um site inteiro
Gerar um mapa do site
Coletar dados
Pq temos um conjunto de páginas?
método
recursividade
Mas queremos mais, queremos DADOS!
LINK
conteúdo
Link de edição
Como então construir um Google?
Com um crawler
Com bilhões de dólares
Perguntas a se fazer antes de construir um crawler
Quais dados estou tentando coletar?
Quando o crawler acessa um site, parte para o próximo ou fica um tempo detalhando aquele site?
Existe uma razão para não querer coletar dados de um lugar?
Como estou protegido, de questões legais, se o meu crawler for pego em algum lugar?
Armazenando dados
Arquivos de mídia (jpg, mp4 ...)
Arquivos CSV
Banco de Dados 
Email (enviando o resultado)
Outras coisas que podem ser feitas
Ler documentos
TEXTO
CSV
PDF
.DOC
Outros recursos para aprender
Limpeza de dados
Ler e interpretar linguagem natural
Fazer crawling através de áreas protegidas (login e senha)
Scraping de javascript (AJAX request)
Processar imagem e reconhecer texto
Referências
image1.png
image2.JPG
image3.png
image4.png
image5.png
image6.png
image7.png
image8.svg
 
.MsftOfcThm_Accent1_Fill {
 fill:#4472C4; 
}
.MsftOfcThm_Accent1_Stroke {
 stroke:#4472C4; 
}
 
image9.png
image10.png
image11.jpg
image12.jpg
image13.png
image14.png
image15.png
image16.jpeg
image17.png
image18.png
image19.png
image20.png
image21.svg
 
.MsftOfcThm_Accent1_Fill {
 fill:#4472C4; 
}
.MsftOfcThm_Accent1_Stroke {
 stroke:#4472C4; 
}
 
image22.png
image23.png
image24.png
media1.mp4
image25.png
image26.png
image27.png
image28.png
image29.png
image30.png
media2.mp4
image31.png
image32.png
image33.png
image34.png
image35.png
image36.png
image37.png
image38.png
image39.png
image40.jpg

Mais conteúdos dessa disciplina