Raspando dados O maravilhoso mundo da multidão de informações pedro belasco - cromatica - cdc 2010 - W3C - Open Data 1
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. 2
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" 3
Parte 3, YQL Abstraindo consultas de fontes variadas Busca genérica só com Ajax+YQL 4
Parte 1 Arquitetura 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) 5
Parte 1 Arquitetura 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) 5
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 6
RPC vs REST RPC = Ênfase na multiplicidade de verbos getuser() adduser() removeuser() updateuser() getlocation() addlocation() removelocation() updatelocation() listusers() listlocations() findlocation() finduser() 7
REST = Ênfase na multiplicidade de RECURSOS User { :get, :post, :update, :delete } Location {:get, :post, :update, :delete } 8
Lendo informações GET ou POST Os dois verbos aceitam complementos (variáveis) 9
Lendo informações 9
Lendo informações Dê-me já esta fruta chamada maçã! 9
Lendo informações Dê-me já esta fruta chamada maçã! GET http://www.frutas.com?fruta=maca 9
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 9
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. 9
A resposta! Depois de entendio o pedido, o servidor HTTP responde de acordo com o combinado. 10
A resposta! 10
A resposta! Cabeçalho cheio de informação que só interessa para o client Date Thu, 15 Apr 2010 20:20:29 GMT Server: Apache/2.2.3 (Red Hat) X-Powered-By: PHP/5.2.9 Vary: Cookie X-Pingback: http://globalvoicesonline.org/xmlrpc.php Keep-Alive: timeout=4, max=42 Connection: Keep-Alive Transfer-Encoding: chunked Content-Type: text/html; charset=utf-8 10
A resposta! Cabeçalho cheio de informação que só interessa para o client Date Thu, 15 Apr 2010 20:20:29 GMT Server: Apache/2.2.3 (Red Hat) X-Powered-By: PHP/5.2.9 Vary: Cookie X-Pingback: http://globalvoicesonline.org/xmlrpc.php Keep-Alive: timeout=4, max=42 Connection: Keep-Alive Transfer-Encoding: chunked Content-Type: text/html; charset=utf-8 O corpo da resposta... A página que pedimos! <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/tr/xhtml1/dtd/ xhtml1-transitional.dtd"> <head> <title>a maçã</title> </head> <body> <h1>a maçã</h1> <p>a maça é um pseudo-fruto composto de cauda, tronco e membros</p> </body> 10
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 11
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! 12
MDN/XPathResult https://developer.mozilla.org/en/ XPathResult Implementação simples e ligeira. Direto do Browser. 13
Firebug. O Amigão 14
O poder da multidão Raspagem coletiva. Simples de implementar 15
Crowd Scrap na Amazon... GreaseMonkey + Webservice + Interesse coletivo = Crowd Scrap Vamos nessa? http://coletor.legisdados.org 16
Algumas coisas legais ScrapperWiki (http://scraperwiki.com/) Comunidade Transparência HackDay 17
Valeuzíssimo Ao pessoal do Polignu Aos desenvolvedores das aplicações e bibliotecas pedro@estudiocromatica.com 18