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

810 visualizações

Publicada em

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.

Publicada em: Tecnologia
0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
810
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
14
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

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

  1. 1. Web Scraping: Aplicações na ciência e nos negócios Prof.º M.Sc. Sidney Roberto de Sousa sidney.sousa@ifms.edu.br
  2. 2. Quem está aí? ● Devs ● DBAs ● Téc. de infra ● Estudantes ● Entusiastas do ramo ● Curiosos
  3. 3. 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)
  4. 4. 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
  5. 5. A Web como fonte de dados e informações
  6. 6. …mas, o que é a Web?
  7. 7. O que é a Web?
  8. 8. O que é a Web?
  9. 9. O que é a Web?
  10. 10. O que é a Web?
  11. 11. A Web mudou o comportamento da humanidade
  12. 12. … quer um exemplo?
  13. 13. Vou pedir dinheiro pra mãe para pegar o ônibus pro centro para ir na biblioteca fazer aquele trabalho de história...
  14. 14. Não esquece de pedir dinheiro para comprar folhas de almaço para você poder copiar os textos.
  15. 15. Pfff... tá tirando? Vou xerocar!
  16. 16. Ah, muleque!
  17. 17. Hoje em dia...
  18. 18. Puts... onde eu vou achar conteúdo pro trabalho de filosofia?
  19. 19. Deixa de vacilo, garoto! Procura no Google!
  20. 20. #partiuGoogle
  21. 21. Falando a linguagem das páginas Web
  22. 22. Boa notícia: páginas Web são ricas!
  23. 23. Problema: páginas Web são ricas!
  24. 24. 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
  25. 25. //*[contains(@class, 'destaque')]//a/text()
  26. 26. //img
  27. 27. O que é um Web Scraper?
  28. 28. Definição Web Scraper → programa que realiza Web Scraping
  29. 29. 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.”
  30. 30. 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
  31. 31. 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
  32. 32. 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... } }
  33. 33. 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()));
  34. 34. 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());
  35. 35. Web Scraping com Java: Classe ExemploWebCrawler resultados[i] = writer.toString().replace("n",""); } } } catch (Exception e1) { e1.printStackTrace(); } } } } catch (Exception e) { e.printStackTrace(); } return resultados; }
  36. 36. 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())
  37. 37. Aplicações nos negócios
  38. 38. Bite Hunter
  39. 39. DATA.GOV.UK
  40. 40. lyst
  41. 41. Mapado
  42. 42. Elabora
  43. 43. Aplicações na ciência
  44. 44. SciencesPo
  45. 45. Scrappy
  46. 46. Projetos de pesquisa no IFMS
  47. 47. Questões legais e conclusões
  48. 48. 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
  49. 49. 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

×