27
Raspando dados O maravilhoso mundo da multidão de informações pedro belasco - cromatica - cdc 2010 - W3C - Open Data 1 Thursday, April 28, 2011

Raspando dados - PoliGNURaspando dados O maravilhoso mundo da multidão de informações pedro belasco - cromatica - cdc 2010 - W3C - Open Data Thursday, April 28, 2011 1

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

  • Raspando dadosO maravilhoso mundo da multidão de informações

    pedro belasco - cromatica - cdc2010 - W3C - Open Data

    1Thursday, April 28, 2011

  • Parte 1, Mas, afinal, que diabos “é” uma página?

    • Arquitetura da Internet, como computadores conversam HTTP

    • Os verbos Mágicos: GET e POST PUT e DELETE

    • Ferramentas para ver o que acontece.

    2Thursday, April 28, 2011

  • Parte 2, A sacada do DOM, e como achar o que você

    quer dentro de uma página estruturada. Ou não.

    • Nosso amigo, o XPath• Reconhecendo "boas vítimas"

    3Thursday, April 28, 2011

  • Parte 3,YQL

    • Abstraindo consultas de fontes variadas• Busca genérica só com Ajax+YQL

    4Thursday, April 28, 2011

  • Parte 1Arquitetura da Internet, como computadores “conversam” HTTP

    • POST (tó o que eu tenho, Create)• GET (me dá, Read)• PUT (toma aqui, arruma aí, Update)• DELETE (tira já daí, é Delete mesmo)

    5Thursday, April 28, 2011

  • Parte 1Arquitetura da Internet, como computadores “conversam” HTTP

    • POST (tó o que eu tenho, Create)• GET (me dá, Read)• PUT (toma aqui, arruma aí, Update)• DELETE (tira já daí, é Delete mesmo)

    5Thursday, April 28, 2011

  • REST & RESTful

    • A Transferência de Estado Representacional (Representational State Transfer) ou somente (REST) é uma técnica de engenharia de software para sistemas hipermídia distribuídos como a World Wide Web. Wikipedia

    6Thursday, April 28, 2011

  • RPC vs REST

    • RPC = Ênfase na multiplicidade de verbosgetUser()addUser()removeUser()updateUser()getLocation()addLocation()removeLocation()updateLocation()listUsers()listLocations()findLocation()findUser()

    7Thursday, April 28, 2011

  • • REST = Ênfase na multiplicidade de RECURSOS

    • User { :get, :post, :update, :delete }• Location {:get, :post, :update, :delete }

    8Thursday, April 28, 2011

  • Lendo informações

    • GET ou POST• Os dois verbos aceitam complementos

    (variáveis)

    9Thursday, April 28, 2011

  • Lendo informações

    9Thursday, April 28, 2011

  • Lendo informações

    Dê-me já esta fruta chamada maçã!

    9Thursday, April 28, 2011

  • Lendo informações

    Dê-me já esta fruta chamada maçã!

    GET http://www.frutas.com?fruta=maca

    9Thursday, April 28, 2011

    http://www.frutas.com?fruta=macahttp://www.frutas.com?fruta=maca

  • Lendo informações

    Dê-me já esta fruta chamada maçã!

    GET http://www.frutas.com?fruta=maca

    POST (fruta=maça) => http://www.frutas.com

    9Thursday, April 28, 2011

    http://www.frutas.com?fruta=macahttp://www.frutas.com?fruta=macahttp://www.fruta.comhttp://www.fruta.com

  • Lendo informações

    Dê-me já esta fruta chamada maçã!

    GET http://www.frutas.com?fruta=maca

    POST (fruta=maça) => http://www.frutas.com

    GET recebe parâmetros no gogó.POST só recebe por escrito.

    9Thursday, April 28, 2011

    http://www.frutas.com?fruta=macahttp://www.frutas.com?fruta=macahttp://www.fruta.comhttp://www.fruta.com

  • A resposta!

    • Depois de entendio o pedido, o servidor HTTP responde de acordo com o combinado.

    10Thursday, April 28, 2011

  • A resposta!

    10Thursday, April 28, 2011

  • A resposta!

    Cabeçalho cheio de informação que só interessa para o clientDate Thu, 15 Apr 2010 20:20:29 GMTServer: Apache/2.2.3 (Red Hat)X-Powered-By: PHP/5.2.9Vary: CookieX-Pingback: http://globalvoicesonline.org/xmlrpc.phpKeep-Alive: timeout=4, max=42Connection: Keep-AliveTransfer-Encoding: chunkedContent-Type: text/html; charset=utf-8

    10Thursday, April 28, 2011

    http://globalvoicesonline.org/xmlrpc.phphttp://globalvoicesonline.org/xmlrpc.php

  • A resposta!

    Cabeçalho cheio de informação que só interessa para o clientDate Thu, 15 Apr 2010 20:20:29 GMTServer: Apache/2.2.3 (Red Hat)X-Powered-By: PHP/5.2.9Vary: CookieX-Pingback: http://globalvoicesonline.org/xmlrpc.phpKeep-Alive: timeout=4, max=42Connection: Keep-AliveTransfer-Encoding: chunkedContent-Type: text/html; charset=utf-8

    O corpo da resposta... A página que pedimos!

    A maçã

    A maçã

    A maça é um pseudo-fruto composto de cauda, tronco e membros

    10Thursday, April 28, 2011

    http://globalvoicesonline.org/xmlrpc.phphttp://globalvoicesonline.org/xmlrpc.phphttp://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtdhttp://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtdhttp://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtdhttp://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd

  • YQL

    • “select * from internet”• permite definir como fonte de dados quase

    qualquer recurso ‘parseável’ - html, xml, xls, csv... e devolve JSON ou XML.

    • permite uso de javascript para formatar a saída.

    • acessível por uma interface REST

    11Thursday, April 28, 2011

  • XPath

    • XML Path Language (http://www.w3.org/TR/xpath/)

    • Permite encontrar elementos por busca em suas posições ou descrições em um doc XML/HTML

    • Automatizar!

    12Thursday, April 28, 2011

    http://www.w3.org/TR/xpath/http://www.w3.org/TR/xpath/

  • MDN/XPathResult

    • https://developer.mozilla.org/en/XPathResult

    • Implementação simples e ligeira. Direto do Browser.

    13Thursday, April 28, 2011

    https://developer.mozilla.org/en/XPathResulthttps://developer.mozilla.org/en/XPathResulthttps://developer.mozilla.org/en/XPathResulthttps://developer.mozilla.org/en/XPathResult

  • Firebug. O Amigão

    14Thursday, April 28, 2011

  • O poder da multidão

    • Raspagem coletiva.• Simples de implementar

    15Thursday, April 28, 2011

  • Crowd Scrap na Amazon...

    • GreaseMonkey + Webservice + Interesse coletivo = Crowd Scrap• Vamos nessa? http://coletor.legisdados.org

    16Thursday, April 28, 2011

  • Algumas coisas legais

    • ScrapperWiki (http://scraperwiki.com/)• Comunidade Transparência HackDay

    17Thursday, April 28, 2011

    http://scraperwiki.comhttp://scraperwiki.com

  • ValeuzíssimoAo pessoal do Polignu

    Aos desenvolvedores das aplicações e bibliotecas

    [email protected]

    18Thursday, April 28, 2011

    mailto:[email protected]:[email protected]:[email protected]:[email protected]