raspando dados - polignuraspando dados o maravilhoso mundo da multidão de informações pedro...
TRANSCRIPT
-
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
18Thursday, April 28, 2011
mailto:[email protected]:[email protected]:[email protected]:[email protected]