Top Banner
Web Scraping: Aplicações na ciência e nos negócios Prof.º M.Sc. Sidney Roberto de Sousa [email protected]
51

Web Scraping: aplicações nos negócios e na ciência

Jul 06, 2015

Download

Technology

Sidney Roberto

Minha palestra no Javaneiros 2014, onde explico brevemente sobre Web Scraping e alguns cases de aplicação da técnica nos negócios e na ciência.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Web Scraping: aplicações nos negócios e na ciência

Web Scraping: Aplicações na ciência e nos

negócios

Prof.º M.Sc. Sidney Roberto de [email protected]

Page 2: Web Scraping: aplicações nos negócios e na ciência

Quem está aí?

● Devs● DBAs● Téc. de infra● Estudantes● Entusiastas do

ramo● Curiosos

Page 3: Web Scraping: aplicações nos negócios e na ciência

Short bio

● Professor de desenvolvimento Web e coordenador de EaD no IFMS campus Aquidauana

● Bacharel em Ciência da Computação (UEMS)

● Mestre em Ciência da Computação (UNICAMP)

● Especialista em docência (IFMS)● Desenvolvedor há 10 anos (UEMS,

Pinuts, DigithoBrasil, CASSEMS e IFMS)

Page 4: Web Scraping: aplicações nos negócios e na ciência

Roteiro

● A Web como fonte de dados e informações● Falando a linguagem das páginas Web● O que é um Web Scraper?● Aplicações nos negócios● Aplicações na ciência● Questões legais e conclusões

Page 5: Web Scraping: aplicações nos negócios e na ciência

A Web como fonte de dados e informações

Page 6: Web Scraping: aplicações nos negócios e na ciência

…mas, o que é a Web?

Page 7: Web Scraping: aplicações nos negócios e na ciência

O que é a Web?

Page 8: Web Scraping: aplicações nos negócios e na ciência

O que é a Web?

Page 9: Web Scraping: aplicações nos negócios e na ciência

O que é a Web?

Page 10: Web Scraping: aplicações nos negócios e na ciência

O que é a Web?

Page 11: Web Scraping: aplicações nos negócios e na ciência

A Web mudou o comportamento da humanidade

Page 12: Web Scraping: aplicações nos negócios e na ciência

… quer um exemplo?

Page 13: Web Scraping: aplicações nos negócios e na ciência

Vou pedir dinheiro pra mãe para pegar o ônibus pro centro

para ir na biblioteca fazer aquele trabalho de história...

Page 14: Web Scraping: aplicações nos negócios e na ciência

Não esquece de pedir dinheiro para comprar folhas de almaço para

você poder copiar os textos.

Page 15: Web Scraping: aplicações nos negócios e na ciência

Pfff... tá tirando? Vou xerocar!

Page 16: Web Scraping: aplicações nos negócios e na ciência

Ah, muleque!

Page 17: Web Scraping: aplicações nos negócios e na ciência

Hoje em dia...

Page 18: Web Scraping: aplicações nos negócios e na ciência

Puts... onde eu vou achar conteúdo pro trabalho de filosofia?

Page 19: Web Scraping: aplicações nos negócios e na ciência

Deixa de vacilo, garoto! Procura no Google!

Page 20: Web Scraping: aplicações nos negócios e na ciência

#partiuGoogle

Page 21: Web Scraping: aplicações nos negócios e na ciência

Falando a linguagem das páginas Web

Page 22: Web Scraping: aplicações nos negócios e na ciência

Boa notícia: páginas Web são ricas!

Page 23: Web Scraping: aplicações nos negócios e na ciência

Problema: páginas Web são ricas!

Page 24: Web Scraping: aplicações nos negócios e na ciência

Extraindo trechos de páginas Web

● Páginas Web são baseadas em HTML● HTML → conjuntos de tags aninhadas● Estrutura parecida com uma árvore● XPath → linguagem de consulta a documentos

estruturados com linguagens baseadas em XML● Permite a navegação estratégica na árvore

Page 25: Web Scraping: aplicações nos negócios e na ciência

//*[contains(@class, 'destaque')]//a/text()

Page 26: Web Scraping: aplicações nos negócios e na ciência

//img

Page 27: Web Scraping: aplicações nos negócios e na ciência

O que é um Web Scraper?

Page 28: Web Scraping: aplicações nos negócios e na ciência

Definição

Web Scraper → programa que realiza Web Scraping

Page 29: Web Scraping: aplicações nos negócios e na ciência
Page 30: Web Scraping: aplicações nos negócios e na ciência

Segundo a Wikipedia...

“Web scraping (web harvesting or web data extraction) is a computer software technique of extracting information from websites. Usually, 

such software programs simulate human exploration of the World Wide Web by either implementing low­level Hypertext Transfer 

Protocol (HTTP), or embedding a fully­fledged web browser, such as Internet Explorer or 

Mozilla Firefox.”

Page 31: Web Scraping: aplicações nos negócios e na ciência

Web Scraping via browser

● Uso de plugins/addons para consultar páginas com Xpath → Ex: XPath Helper, para o Chrome

● Uso de plugins/addons para planejar/criar esquemas de extração de conteúdo em páginas → Web Scraper, para o Chrome

Page 32: Web Scraping: aplicações nos negócios e na ciência

Web Scraping via programação

● Uso de APIs para realizar conexões HTTP e aplicar consultas XPath em páginas →Ex: HTTPClient, HTMLCleaner, urllib3, lxml

● Uso de APIs para realizar Web Scraping em alto nível →Ex: Scrapy

Page 33: Web Scraping: aplicações nos negócios e na ciência

Web Scraping com Java

String urlPagina = "http://g1.globo.com/index.html";

String xPathListaManchetes = "//*[contains(@class, 'destaque')]//a/text()";

ExemploWebCrawler crawler = new ExemploWebCrawler();

CloseableHttpClient clienteHTTP = crawler.criaClienteHTTP();

Object[] listaManchetes = crawler.pegaLista(clienteHTTP, urlPagina,                                                                    xPathListaManchetes);

if (listaManchetes != null && listaManchetes.length > 1) {

    for (Object manchete : listaManchetes) {

        String textoManchete = String.valueOf(manchete).toUpperCase();

        // faça alguma coisa...

    }

}

Page 34: Web Scraping: aplicações nos negócios e na ciência

Web Scraping com Java: Classe ExemploWebCrawler

public CloseableHttpClient criaClienteHTTP() {

    return HttpClientBuilder.create().build();

}

public Object[] pegaLista(CloseableHttpClient cliente, String url, String xpath) {

    Object[] resultados = new Object[0];

    try {

        HttpGet httpGet = new HttpGet(url);

        HttpResponse response = cliente.execute(httpGet);

        HttpEntity entidade = response.getEntity();

        if (entidade != null) {

            HtmlCleaner cleaner = new HtmlCleaner();

            CleanerProperties propriedades = cleaner.getProperties();

            propriedades.setAllowHtmlInsideAttributes(true);

            propriedades.setAllowMultiWordAttributes(true);

            propriedades.setRecognizeUnicodeChars(true);

            propriedades.setOmitComments(true);

            TagNode no = cleaner.clean(new InputStreamReader(entidade.getContent()));

Page 35: Web Scraping: aplicações nos negócios e na ciência

Web Scraping com Java: Classe ExemploWebCrawler

            try {

                resultados = no.evaluateXPath(xpath);

            } catch (org.htmlcleaner.XPatherException e) {

                try {

                    Document documento = new DomSerializer(

                        new CleanerProperties()).createDOM(no);

                    XPath consulta = XPathFactory.newInstance().newXPath();

                    NodeList nosResultado = (NodeList) consulta.evaluate(

                    xpath, documento, XPathConstants.NODESET);

                    if (nosResultado != null) {

                        resultados = new Object[nosResultado.getLength()];

                        for (int i = 0; i < nosResultado.getLength(); i++) {

                          resultados[i] = nosResultado.item(i).getTextContent().trim();

                          StringWriter writer = new StringWriter();

                          StringEscapeUtils.unescapeHtml(writer,resultados[i].toString());

                       

Page 36: Web Scraping: aplicações nos negócios e na ciência

Web Scraping com Java: Classe ExemploWebCrawler

                         resultados[i] = writer.toString().replace("\n","");

                      }

                   }

                } catch (Exception e1) {

                   e1.printStackTrace();

                }

             }

         }

      } catch (Exception e) {

          e.printStackTrace();

      }

      return resultados;

   }

Page 37: Web Scraping: aplicações nos negócios e na ciência

Web Scraping com Python

import urllib3

import lxml.html

import re

consulta_xpath = "//*[contains(@class, 'destaque')]//a/text()"

url =  "http://g1.globo.com/index.html"

http = urllib3.PoolManager()

resposta = http.request('GET', url)

documento = lxml.html.document_fromstring(resposta.data)

resultados = documento.xpath(consulta_xpath)

for resultado in resultados:

    print(resultado.strip())

Page 38: Web Scraping: aplicações nos negócios e na ciência

Aplicações nos negócios

Page 39: Web Scraping: aplicações nos negócios e na ciência

Bite Hunter

Page 40: Web Scraping: aplicações nos negócios e na ciência

DATA.GOV.UK

Page 41: Web Scraping: aplicações nos negócios e na ciência

lyst

Page 42: Web Scraping: aplicações nos negócios e na ciência

Mapado

Page 43: Web Scraping: aplicações nos negócios e na ciência

Elabora

Page 44: Web Scraping: aplicações nos negócios e na ciência

Aplicações na ciência

Page 45: Web Scraping: aplicações nos negócios e na ciência

SciencesPo

Page 46: Web Scraping: aplicações nos negócios e na ciência

Scrappy

Page 47: Web Scraping: aplicações nos negócios e na ciência

Projetos de pesquisa no IFMS

Page 48: Web Scraping: aplicações nos negócios e na ciência

Questões legais e conclusões

Page 49: Web Scraping: aplicações nos negócios e na ciência

Questões legais

● Não existe uma legislação específica para o uso de Web Scraping

● Porém, há precedentes de penalização ao uso:

– Curriculum Tecnologia Ltda. x Catho Online S/C Ltda. (2002)

– American Airlines x FareChase (2003)– eBay x Bidder's Edge (2000)

● Cuidados a serem tomados:

– Sazonalidade de extração– Publicação dos dados extraídos

Page 50: Web Scraping: aplicações nos negócios e na ciência

Conclusões

● Web Scraping é ideal para agregação de dados e geração de informação

● Mais importante que o Web Scraping é o uso dos dados extraídos

– Visão computacional– Mineração de dados– BI

Page 51: Web Scraping: aplicações nos negócios e na ciência