SlideShare una empresa de Scribd logo
1 de 21
#MéridaTechMeetup
Extracción de datos con Python (webscraping)
Ernesto Crespo
● Blog: http://blog.crespo.org.ve
● Blog: http://ecrespo.github.io
● Github: https://github.com/ecrespo
● Bitbucket https://bitbucket.org/ecrespo
● Twitter: https://twitter.com/_seraph1
#MéridaTechMeetup
Extracción de datos con Python (webscraping)
"Somos como enanos a los hombros de gigantes. Podemos ver más, y más
lejos que ellos, no porque la agudeza de nuestra vista ni por la altura de
nuestro cuerpo, sino porque somos levantados por su gran altura".
Bernardo de Chartres
"Extración de datos con python (webscraping) " by Ernesto Crespo is licensed
under a Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0
Internacional License.
#MéridaTechMeetup
Extracción de datos con Python (webscraping)
Agenda:
● ¿Qué es webscraping?
● ¿Qué es Python?
● Gobierno Abierto
● Datos Abiertos
● Herramientas de Python para extraer datos de páginas web
● Extraer datos con Beautiful Soup 4
● Extraer datos con Pyquery
● Extraer datos con Scrapperwiki
● Extraer datos conWebscraping
● Extraer datos con el Framework Scrapy
● Iniciativas de comunidades
#MéridaTechMeetup
¿Qué es webscraping?
Es el proceso de recolección o extracción de datos de páginas web de forma automática,
es un campo muy activo y en desarrollo que comparte objetivos con la web semántica,
el procesamiento de texto, inteligencia artificial e interacción humano computador.
#MéridaTechMeetup
¿Qué es Python?
Lenguaje de programación interpretado multiparadigma, soporta orientación a objetos,
programación imperativa y, en menor medida programación funcional. Usa tipado
dinámico y es multiplataforma.
Es administrado por la Python Software Foundation y posee una Licencia de código
Abierto Python Software Foundation License que es compatible con la Licencia Pública
GNU.
http://www.python.org
#MéridaTechMeetup
Gobierno Abierto:
● Datos Abierto
● Procesos Abiertos
● Redes Sociales
● Colaboración
● Participación ciudadana
#MéridaTechMeetup
Datos Abiertos (Datos vinculados):
Es una filosofía y práctica que persigue que determinados datos esten
disponibles de forma libre para todo el mundo, sin restricciones de derecho de
autor, de patentes o de otros mecanismos de control.
#MéridaTechMeetup
Pero hasta ahora no hay muchos datos abiertos...
#MéridaTechMeetup
Herramientas de Python para extraer datos de páginas web
● Urllib y urlopen
● Beautiful Soup 4
● Python Mechanize (basado en perl mechanize)
● Pyquery
● Scrapermark
● ScrapperWiki
● Webscraping
● Scrapy : Framework para la extracción de datos de forma automatizada
● Selenium (para próxima versión de la presentación)
#MéridaTechMeetup
Sitio a extraer datos:www.timeanddate.com
#MéridaTechMeetup
Sitio a extraer datos:www.timeanddate.com
#MéridaTechMeetup
Sitio a extraer datos:www.timeanddate.com
#MéridaTechMeetup
Sitio a extraer datos:www.timeanddate.com con Beautiful Soup 4
#!/usr/bin/env python
#Importar urllib2 y BeautifulSoup
import urllib2
from BeautifulSoup import BeautifulSoup
#Se crea la instancia y se abre el url de timeanddate
#buscando la informacion de la hora de salir el sol en Venezuela
soup = BeautifulSoup(urllib2.urlopen('http://www.timeanddate.com/worldclock/astronomy.html?n=58').read())
#Se busca la palabra table, y de ahi class y se busca el contenido
#de cada columna de la tabla.
for row in soup('table', {'class': 'spad'})[0].tbody('tr'):
tds = row('td')
#Se muestra la fecha y hora de la salida del sol
print tds[0].string, tds[1].string
El resultado de la ejecución es la siguiente:
23 Oct 2013 05:47
24 Oct 2013 05:47
25 Oct 2013 05:47
26 Oct 2013 05:48
27 Oct 2013 05:48
28 Oct 2013 05:48
29 Oct 2013 05:48
#MéridaTechMeetup
Sitio a extraer datos:www.timeanddate.com con pyquery
#!/usr/bin/env python
#importar pyquery
from pyquery import *
#Se Crea la instancia de la Clase PyQuery pasando el url de
#timeanddate.
html = PyQuery(url='http://www.timeanddate.com/worldclock/astronomy.html?n=58')
#Se busca el tag html de la tabla.
#Recibe todos los elementos de la tabla.
trs = html('table.spad tbody tr')
#Se muestra los elementos de la tabla.
print trs
#Se recorre los elementos de la tabla
for tr in trs:
tds = tr.getchildren()
print tds[1].text, tds[2].text
El resultado de la ejecución del script se muestra a continuación:
05:47 17:36
05:47 17:36
05:48 17:35
05:48 17:35
05:48 17:35
05:48 17:34
05:48 17:34
#MéridaTechMeetup
Sitio a extraer datos:www.timeanddate.com con ScrapperWiki
#!/usr/bin/env python
#importar scraperwiki
import scraperwiki
#importar lxml.html
import lxml.html
#Url de la pagina timeanddate de la
#info de Venezuela.
url = "http://www.timeanddate.com/worldclock/astronomy.html?n=58"
#se crea la instancia de la clase scrape pasando el
#url del sitio a extraer la informacion.
html = scraperwiki.scrape(url)
#Se busca en el codigo html de la pagina
root = lxml.html.fromstring(html)
#Se crea una lista que almacenara los diccionarios conteniendo
#la informacion que se necesita
lista = []
#Se busca el tag html tbody y tr.
#Esto genera una lista con el contenido del tbody.Esto
#se recorre dicha lista
for tr in root.cssselect("tbody tr "):
#Se selecciona la informacion que aparece en
#el tag html td
tds = tr.cssselect("td")
#Se guarda la informacion en un diccionario
Datos = { 'fecha': tds[0].text_content(), 'amanecer': tds[1].text_content(), 'atardecer': tds[2].text_content() }
#Se agrega los datos a la lista
lista.append(datos)
#Se muestra la lista en pantalla
for i in lista:
print i
El resultado de la ejecución del script a continuación:
{'fecha': '26 Oct 2013', 'atardecer': '17:35', 'amanecer': '05:48'}
{'fecha': '27 Oct 2013', 'atardecer': '17:35', 'amanecer': '05:48'}
{'fecha': '28 Oct 2013', 'atardecer': '17:35', 'amanecer': '05:48'}
{'fecha': '29 Oct 2013', 'atardecer': '17:34', 'amanecer': '05:48'}
{'fecha': '30 Oct 2013', 'atardecer': '17:34', 'amanecer': '05:48'}
{'fecha': '31 Oct 2013', 'atardecer': '17:34', 'amanecer': '05:48'}
{'fecha': '1 Nov 2013', 'atardecer': '17:33', 'amanecer': '05:49'}
#MéridaTechMeetup
Sitio a extraer datos:www.timeanddate.com con Webscraping
#!/usr/bin/env python
#De webscraping se importa download y xpath
from webscraping import download, xpath
#Se define la instancia Download
D = download.Download()
#Se obtiene la informacion de la salida y ocultamiento del
#sol en Venezuela desde la pagina timeanddate.
html = D.get('http://www.timeanddate.com/worldclock/astronomy.html?n=58')
#Se busca la informacion en la tabla donde se muestra.
for row in xpath.search(html, '//table[@class="spad"]/tbody/tr'):
#Se busca en la fila el tag /td
cols = xpath.search(row, '/td')
#Se muestra la informacion en pantalla
print 'Amanecer: %s, Atardecer: %s' % (cols[1], cols[2])
A continuación se muestra el resultado de la ejecución del script:
Amanecer: 05:47, Atardecer: 17:36
Amanecer: 05:47, Atardecer: 17:36
Amanecer: 05:47, Atardecer: 17:36
Amanecer: 05:48, Atardecer: 17:35
Amanecer: 05:48, Atardecer: 17:35
Amanecer: 05:48, Atardecer: 17:35
Amanecer: 05:48, Atardecer: 17:34
#MéridaTechMeetup
Extracción de datos con el Framework Scrapy
● Extracción de datos de páginas web con scrapy
http://blog.crespo.org.ve/2015/01/extraccion-de-datos-de-paginas-web-con.html
● Extracción de datos de páginas web con scrapy y MongoDB
http://blog.crespo.org.ve/2015/01/extraccion-de-datos-de-paginas-web-con_2.html
#MéridaTechMeetup
Iniciativas de comunidades
#MéridaTechMeetup
Iniciativas de comunidades
#MéridaTechMeetup
#MéridaTechMeetup
¿Preguntas?
"Si he logrado ver más lejos, ha sido porque he subido a hombros de gigantes".
Isaac Newton
Descarga de la presentación:
http://www.slideshare.net/ecrespo/webscraping
Blog: http://blog.crespo.org.ve/search/label/webscraping

Más contenido relacionado

Destacado

Desarrollo de aplicaciones multiplataforma con python y Kivy
Desarrollo de aplicaciones multiplataforma con python y KivyDesarrollo de aplicaciones multiplataforma con python y Kivy
Desarrollo de aplicaciones multiplataforma con python y KivyErnesto Crespo
 
Creando Aplicaciones para Android con Kivy
Creando Aplicaciones para Android con KivyCreando Aplicaciones para Android con Kivy
Creando Aplicaciones para Android con KivyNahuel Defossé
 
Desarollando aplicaciones móviles con Python y Android
Desarollando aplicaciones móviles con Python y AndroidDesarollando aplicaciones móviles con Python y Android
Desarollando aplicaciones móviles con Python y AndroidTatiana Al-Chueyr
 
Seguridad WordPress en Sevilla
Seguridad WordPress en SevillaSeguridad WordPress en Sevilla
Seguridad WordPress en SevillaQuantiKa14
 
Portfolio Paradigma Tecnologico
Portfolio Paradigma TecnologicoPortfolio Paradigma Tecnologico
Portfolio Paradigma TecnologicoParadigma Digital
 
Como recopilar datos de un dominio
Como recopilar datos de un dominioComo recopilar datos de un dominio
Como recopilar datos de un dominioAuxi Gifmania
 
Standalone Android Apps in Python
Standalone Android Apps in PythonStandalone Android Apps in Python
Standalone Android Apps in PythonBaptiste Lagarde
 
Kivy - Python UI Library for Any Platform
Kivy - Python UI Library for Any PlatformKivy - Python UI Library for Any Platform
Kivy - Python UI Library for Any PlatformSaurav Singhi
 
De Cero A Python En 45 Min
De Cero A Python En 45 MinDe Cero A Python En 45 Min
De Cero A Python En 45 MinMarco Mansilla
 
Sistema de Mensajeria de Colas con ZeroMQ y Python
Sistema de Mensajeria de Colas con ZeroMQ y PythonSistema de Mensajeria de Colas con ZeroMQ y Python
Sistema de Mensajeria de Colas con ZeroMQ y PythonErnesto Crespo
 
Historia del internet (RESUMEN)
Historia del internet (RESUMEN)Historia del internet (RESUMEN)
Historia del internet (RESUMEN)LithiumLat
 
8 Simple Ways to Hack Your Joomla
8 Simple Ways to Hack Your Joomla8 Simple Ways to Hack Your Joomla
8 Simple Ways to Hack Your JoomlaSiteGround.com
 
Python para desarrollo web de ultima generación
Python para desarrollo web de ultima generaciónPython para desarrollo web de ultima generación
Python para desarrollo web de ultima generaciónFutura Networks
 
El uso de los verbos auxiliares do does
El uso de los verbos auxiliares do  doesEl uso de los verbos auxiliares do  does
El uso de los verbos auxiliares do doesJuliaLucchesi5
 
Presente simple do y does
Presente simple do y doesPresente simple do y does
Presente simple do y doesNilda Jimenez
 

Destacado (20)

Desarrollo de aplicaciones multiplataforma con python y Kivy
Desarrollo de aplicaciones multiplataforma con python y KivyDesarrollo de aplicaciones multiplataforma con python y Kivy
Desarrollo de aplicaciones multiplataforma con python y Kivy
 
Creando Aplicaciones para Android con Kivy
Creando Aplicaciones para Android con KivyCreando Aplicaciones para Android con Kivy
Creando Aplicaciones para Android con Kivy
 
Desarollando aplicaciones móviles con Python y Android
Desarollando aplicaciones móviles con Python y AndroidDesarollando aplicaciones móviles con Python y Android
Desarollando aplicaciones móviles con Python y Android
 
Seguridad WordPress en Sevilla
Seguridad WordPress en SevillaSeguridad WordPress en Sevilla
Seguridad WordPress en Sevilla
 
Portfolio Paradigma Tecnologico
Portfolio Paradigma TecnologicoPortfolio Paradigma Tecnologico
Portfolio Paradigma Tecnologico
 
Como recopilar datos de un dominio
Como recopilar datos de un dominioComo recopilar datos de un dominio
Como recopilar datos de un dominio
 
Kivy for you
Kivy for youKivy for you
Kivy for you
 
Developing apps with Kivy
Developing apps with KivyDeveloping apps with Kivy
Developing apps with Kivy
 
Standalone Android Apps in Python
Standalone Android Apps in PythonStandalone Android Apps in Python
Standalone Android Apps in Python
 
Servicios web
Servicios webServicios web
Servicios web
 
Kivy - Python UI Library for Any Platform
Kivy - Python UI Library for Any PlatformKivy - Python UI Library for Any Platform
Kivy - Python UI Library for Any Platform
 
De Cero A Python En 45 Min
De Cero A Python En 45 MinDe Cero A Python En 45 Min
De Cero A Python En 45 Min
 
Uso de navegadores
Uso de navegadoresUso de navegadores
Uso de navegadores
 
Sistema de Mensajeria de Colas con ZeroMQ y Python
Sistema de Mensajeria de Colas con ZeroMQ y PythonSistema de Mensajeria de Colas con ZeroMQ y Python
Sistema de Mensajeria de Colas con ZeroMQ y Python
 
Historia del internet (RESUMEN)
Historia del internet (RESUMEN)Historia del internet (RESUMEN)
Historia del internet (RESUMEN)
 
Buscando informacion
Buscando informacionBuscando informacion
Buscando informacion
 
8 Simple Ways to Hack Your Joomla
8 Simple Ways to Hack Your Joomla8 Simple Ways to Hack Your Joomla
8 Simple Ways to Hack Your Joomla
 
Python para desarrollo web de ultima generación
Python para desarrollo web de ultima generaciónPython para desarrollo web de ultima generación
Python para desarrollo web de ultima generación
 
El uso de los verbos auxiliares do does
El uso de los verbos auxiliares do  doesEl uso de los verbos auxiliares do  does
El uso de los verbos auxiliares do does
 
Presente simple do y does
Presente simple do y doesPresente simple do y does
Presente simple do y does
 

Similar a Extracción de datos con Python (webscraping

Pentesting 101 por Paulino Calderon
Pentesting 101 por Paulino CalderonPentesting 101 por Paulino Calderon
Pentesting 101 por Paulino CalderonWebsec México, S.C.
 
Shodan Tips and tricks. Automatiza y maximiza las búsquedas shodan
Shodan Tips and tricks. Automatiza y maximiza las búsquedas shodanShodan Tips and tricks. Automatiza y maximiza las búsquedas shodan
Shodan Tips and tricks. Automatiza y maximiza las búsquedas shodanJose Manuel Ortega Candel
 
Resolución de concursos de la NoConName 2010 v1.0
Resolución de concursos de la NoConName 2010 v1.0Resolución de concursos de la NoConName 2010 v1.0
Resolución de concursos de la NoConName 2010 v1.0Alejandro Ramos
 
#CONPilar17: Ser curioso NO es una opción
#CONPilar17: Ser curioso NO es una opción#CONPilar17: Ser curioso NO es una opción
#CONPilar17: Ser curioso NO es una opciónMarcos Fuentes
 
Un caso Forense: La Red y la Memoria RAM
Un caso Forense: La Red y la Memoria RAMUn caso Forense: La Red y la Memoria RAM
Un caso Forense: La Red y la Memoria RAMEventos Creativos
 
Cómo construir una plataforma poderosa de datos en un ambiente con recursos r...
Cómo construir una plataforma poderosa de datos en un ambiente con recursos r...Cómo construir una plataforma poderosa de datos en un ambiente con recursos r...
Cómo construir una plataforma poderosa de datos en un ambiente con recursos r...Software Guru
 
Tecnologías avanzadas de descubrimiento y análisis de la Dark Net
Tecnologías avanzadas de descubrimiento y análisis de la Dark NetTecnologías avanzadas de descubrimiento y análisis de la Dark Net
Tecnologías avanzadas de descubrimiento y análisis de la Dark NetJavier Junquera
 
Elías Grande & Jorge Nuñez - Medusa, El nacimiento de los ICS [rooted2019]
Elías Grande & Jorge Nuñez - Medusa, El nacimiento de los ICS [rooted2019]Elías Grande & Jorge Nuñez - Medusa, El nacimiento de los ICS [rooted2019]
Elías Grande & Jorge Nuñez - Medusa, El nacimiento de los ICS [rooted2019]RootedCON
 
Big Data, Revelando los secretos de twitter, CIMAT Zacatecas 2014
Big Data, Revelando los secretos de twitter, CIMAT Zacatecas 2014Big Data, Revelando los secretos de twitter, CIMAT Zacatecas 2014
Big Data, Revelando los secretos de twitter, CIMAT Zacatecas 2014Abel Alejandro Coronado Iruegas
 
Servicios web con Python
Servicios web con PythonServicios web con Python
Servicios web con PythonManuel Pérez
 
Trabajando con gdal, usando fwtools
Trabajando con gdal, usando fwtoolsTrabajando con gdal, usando fwtools
Trabajando con gdal, usando fwtoolsmanalva
 
XXV Betabeers Granada: Blockchain, más allá de las criptomonedas
XXV Betabeers Granada: Blockchain, más allá de las criptomonedasXXV Betabeers Granada: Blockchain, más allá de las criptomonedas
XXV Betabeers Granada: Blockchain, más allá de las criptomonedasJM Robles
 
Curso de Scratch Día 1 (CPETIG)
Curso de Scratch Día 1 (CPETIG)Curso de Scratch Día 1 (CPETIG)
Curso de Scratch Día 1 (CPETIG)Programamos
 

Similar a Extracción de datos con Python (webscraping (20)

Pentesting 101 por Paulino Calderon
Pentesting 101 por Paulino CalderonPentesting 101 por Paulino Calderon
Pentesting 101 por Paulino Calderon
 
Python & OSINT para proyectos de seguridad
Python & OSINT para proyectos de seguridadPython & OSINT para proyectos de seguridad
Python & OSINT para proyectos de seguridad
 
Odd2015 scraping
Odd2015 scrapingOdd2015 scraping
Odd2015 scraping
 
Shodan Tips and tricks. Automatiza y maximiza las búsquedas shodan
Shodan Tips and tricks. Automatiza y maximiza las búsquedas shodanShodan Tips and tricks. Automatiza y maximiza las búsquedas shodan
Shodan Tips and tricks. Automatiza y maximiza las búsquedas shodan
 
Big data
Big dataBig data
Big data
 
Crackers: Tecnicas y Tacticas
Crackers: Tecnicas y Tacticas Crackers: Tecnicas y Tacticas
Crackers: Tecnicas y Tacticas
 
Resolución de concursos de la NoConName 2010 v1.0
Resolución de concursos de la NoConName 2010 v1.0Resolución de concursos de la NoConName 2010 v1.0
Resolución de concursos de la NoConName 2010 v1.0
 
#CONPilar17: Ser curioso NO es una opción
#CONPilar17: Ser curioso NO es una opción#CONPilar17: Ser curioso NO es una opción
#CONPilar17: Ser curioso NO es una opción
 
Un caso Forense: La Red y la Memoria RAM
Un caso Forense: La Red y la Memoria RAMUn caso Forense: La Red y la Memoria RAM
Un caso Forense: La Red y la Memoria RAM
 
Cómo construir una plataforma poderosa de datos en un ambiente con recursos r...
Cómo construir una plataforma poderosa de datos en un ambiente con recursos r...Cómo construir una plataforma poderosa de datos en un ambiente con recursos r...
Cómo construir una plataforma poderosa de datos en un ambiente con recursos r...
 
Scraping the web with python
Scraping the web with pythonScraping the web with python
Scraping the web with python
 
Tecnologías avanzadas de descubrimiento y análisis de la Dark Net
Tecnologías avanzadas de descubrimiento y análisis de la Dark NetTecnologías avanzadas de descubrimiento y análisis de la Dark Net
Tecnologías avanzadas de descubrimiento y análisis de la Dark Net
 
Elías Grande & Jorge Nuñez - Medusa, El nacimiento de los ICS [rooted2019]
Elías Grande & Jorge Nuñez - Medusa, El nacimiento de los ICS [rooted2019]Elías Grande & Jorge Nuñez - Medusa, El nacimiento de los ICS [rooted2019]
Elías Grande & Jorge Nuñez - Medusa, El nacimiento de los ICS [rooted2019]
 
Big Data, Revelando los secretos de twitter, CIMAT Zacatecas 2014
Big Data, Revelando los secretos de twitter, CIMAT Zacatecas 2014Big Data, Revelando los secretos de twitter, CIMAT Zacatecas 2014
Big Data, Revelando los secretos de twitter, CIMAT Zacatecas 2014
 
Hackon URJC
Hackon URJCHackon URJC
Hackon URJC
 
Servicios web con Python
Servicios web con PythonServicios web con Python
Servicios web con Python
 
Trabajando con gdal, usando fwtools
Trabajando con gdal, usando fwtoolsTrabajando con gdal, usando fwtools
Trabajando con gdal, usando fwtools
 
XXV Betabeers Granada: Blockchain, más allá de las criptomonedas
XXV Betabeers Granada: Blockchain, más allá de las criptomonedasXXV Betabeers Granada: Blockchain, más allá de las criptomonedas
XXV Betabeers Granada: Blockchain, más allá de las criptomonedas
 
Android swissknife
Android swissknifeAndroid swissknife
Android swissknife
 
Curso de Scratch Día 1 (CPETIG)
Curso de Scratch Día 1 (CPETIG)Curso de Scratch Día 1 (CPETIG)
Curso de Scratch Día 1 (CPETIG)
 

Más de Ernesto Crespo

Matemáticas Aplicadas usando Python
Matemáticas Aplicadas   usando    PythonMatemáticas Aplicadas   usando    Python
Matemáticas Aplicadas usando PythonErnesto Crespo
 
Usando Django con Docker
Usando Django con DockerUsando Django con Docker
Usando Django con DockerErnesto Crespo
 
"Ley de Infogobierno: antecedentes, situación actual y lo que se espera a fu...
 "Ley de Infogobierno: antecedentes, situación actual y lo que se espera a fu... "Ley de Infogobierno: antecedentes, situación actual y lo que se espera a fu...
"Ley de Infogobierno: antecedentes, situación actual y lo que se espera a fu...Ernesto Crespo
 
Python en Android,Charla del FUDcon Latam 2012
Python en Android,Charla del FUDcon Latam 2012Python en Android,Charla del FUDcon Latam 2012
Python en Android,Charla del FUDcon Latam 2012Ernesto Crespo
 
Taller de Empaquetado para Debian y Canaima
Taller de Empaquetado para Debian y CanaimaTaller de Empaquetado para Debian y Canaima
Taller de Empaquetado para Debian y CanaimaErnesto Crespo
 
Gestión de configuración distribuída para la plataforma de Canaima
Gestión de configuración distribuída para la plataforma de Canaima Gestión de configuración distribuída para la plataforma de Canaima
Gestión de configuración distribuída para la plataforma de Canaima Ernesto Crespo
 
Gestión de configuración con mercurial y etckeeper
Gestión de configuración con mercurial y etckeeperGestión de configuración con mercurial y etckeeper
Gestión de configuración con mercurial y etckeeperErnesto Crespo
 
Empaquetar un paquete Debian por medio de mercurial
Empaquetar un paquete Debian por medio de mercurialEmpaquetar un paquete Debian por medio de mercurial
Empaquetar un paquete Debian por medio de mercurialErnesto Crespo
 
¿Como colaborar en Debian?
¿Como colaborar en Debian?¿Como colaborar en Debian?
¿Como colaborar en Debian?Ernesto Crespo
 

Más de Ernesto Crespo (13)

Matemáticas Aplicadas usando Python
Matemáticas Aplicadas   usando    PythonMatemáticas Aplicadas   usando    Python
Matemáticas Aplicadas usando Python
 
Internet de las cosas
Internet  de las cosasInternet  de las cosas
Internet de las cosas
 
Usando Django con Docker
Usando Django con DockerUsando Django con Docker
Usando Django con Docker
 
"Ley de Infogobierno: antecedentes, situación actual y lo que se espera a fu...
 "Ley de Infogobierno: antecedentes, situación actual y lo que se espera a fu... "Ley de Infogobierno: antecedentes, situación actual y lo que se espera a fu...
"Ley de Infogobierno: antecedentes, situación actual y lo que se espera a fu...
 
Colaborar debian
Colaborar debianColaborar debian
Colaborar debian
 
Python en Android,Charla del FUDcon Latam 2012
Python en Android,Charla del FUDcon Latam 2012Python en Android,Charla del FUDcon Latam 2012
Python en Android,Charla del FUDcon Latam 2012
 
Taller de Empaquetado para Debian y Canaima
Taller de Empaquetado para Debian y CanaimaTaller de Empaquetado para Debian y Canaima
Taller de Empaquetado para Debian y Canaima
 
Gestión de configuración distribuída para la plataforma de Canaima
Gestión de configuración distribuída para la plataforma de Canaima Gestión de configuración distribuída para la plataforma de Canaima
Gestión de configuración distribuída para la plataforma de Canaima
 
Colaborar en Debian
Colaborar en DebianColaborar en Debian
Colaborar en Debian
 
Gestión de configuración con mercurial y etckeeper
Gestión de configuración con mercurial y etckeeperGestión de configuración con mercurial y etckeeper
Gestión de configuración con mercurial y etckeeper
 
Python en Android
Python en AndroidPython en Android
Python en Android
 
Empaquetar un paquete Debian por medio de mercurial
Empaquetar un paquete Debian por medio de mercurialEmpaquetar un paquete Debian por medio de mercurial
Empaquetar un paquete Debian por medio de mercurial
 
¿Como colaborar en Debian?
¿Como colaborar en Debian?¿Como colaborar en Debian?
¿Como colaborar en Debian?
 

Último

Investigacion cualitativa y cuantitativa....pdf
Investigacion cualitativa y cuantitativa....pdfInvestigacion cualitativa y cuantitativa....pdf
Investigacion cualitativa y cuantitativa....pdfalexanderleonyonange
 
INTRODUCCION-A-LOS-ALGORITMOS-BASICOS.pptx
INTRODUCCION-A-LOS-ALGORITMOS-BASICOS.pptxINTRODUCCION-A-LOS-ALGORITMOS-BASICOS.pptx
INTRODUCCION-A-LOS-ALGORITMOS-BASICOS.pptxJamesHerberthBacaTel
 
Presentacion-Prevencion-Incendios-Forestales.pdf
Presentacion-Prevencion-Incendios-Forestales.pdfPresentacion-Prevencion-Incendios-Forestales.pdf
Presentacion-Prevencion-Incendios-Forestales.pdfDodiAcuaArstica
 
Gestión Logística maria palmira guti cabajal
Gestión Logística maria palmira guti cabajalGestión Logística maria palmira guti cabajal
Gestión Logística maria palmira guti cabajalMarcosAlvarezSalinas
 
Cesar Vilchis Vieyra Cesar Vilchis Vieyra
Cesar Vilchis Vieyra  Cesar Vilchis VieyraCesar Vilchis Vieyra  Cesar Vilchis Vieyra
Cesar Vilchis Vieyra Cesar Vilchis Vieyraestudiantes2010
 
Industria musical de EUA vs Industria musical Corea del Sur (2024).pdf
Industria musical de EUA vs Industria musical Corea del Sur (2024).pdfIndustria musical de EUA vs Industria musical Corea del Sur (2024).pdf
Industria musical de EUA vs Industria musical Corea del Sur (2024).pdfJC Díaz Herrera
 
COMUNICADO PARA TODO TIPO DE REUNIONES .
COMUNICADO PARA TODO TIPO DE REUNIONES .COMUNICADO PARA TODO TIPO DE REUNIONES .
COMUNICADO PARA TODO TIPO DE REUNIONES .GIANELAKAINACHALLCOJ2
 
llllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllJulietaCarbajalOsis
 
Los primeros 60 países por IDH en el año (2024).pdf
Los primeros 60 países por IDH en el año (2024).pdfLos primeros 60 países por IDH en el año (2024).pdf
Los primeros 60 países por IDH en el año (2024).pdfJC Díaz Herrera
 
Tipos de Educacion en diferentes partes del mundo.pptx
Tipos de Educacion en diferentes partes del mundo.pptxTipos de Educacion en diferentes partes del mundo.pptx
Tipos de Educacion en diferentes partes del mundo.pptxMiguelPerz4
 
presentacion de conjuntos para primaria.ppt
presentacion de conjuntos para primaria.pptpresentacion de conjuntos para primaria.ppt
presentacion de conjuntos para primaria.pptMelina Alama Visitacion
 
Panorama Sociodemográfico de México 2020: GUANAJUATO
Panorama Sociodemográfico de México 2020: GUANAJUATOPanorama Sociodemográfico de México 2020: GUANAJUATO
Panorama Sociodemográfico de México 2020: GUANAJUATOJuan Carlos Fonseca Mata
 
Novelas Turcas vs Series de EUA en audiencia (2024).pdf
Novelas Turcas vs Series de EUA en audiencia  (2024).pdfNovelas Turcas vs Series de EUA en audiencia  (2024).pdf
Novelas Turcas vs Series de EUA en audiencia (2024).pdfJC Díaz Herrera
 
INFORME DE EVALUACIÓN DE LOS REQUERIMIENTOS.pdf
INFORME DE EVALUACIÓN DE LOS REQUERIMIENTOS.pdfINFORME DE EVALUACIÓN DE LOS REQUERIMIENTOS.pdf
INFORME DE EVALUACIÓN DE LOS REQUERIMIENTOS.pdfMiguelGomez900779
 
Posiciones de México en el PNB PPA per cápita (1982-2024).pdf
Posiciones de México en el PNB PPA per cápita (1982-2024).pdfPosiciones de México en el PNB PPA per cápita (1982-2024).pdf
Posiciones de México en el PNB PPA per cápita (1982-2024).pdfJC Díaz Herrera
 
Las marcas automotrices con más ventas de vehículos (2024).pdf
Las marcas automotrices con más ventas de vehículos (2024).pdfLas marcas automotrices con más ventas de vehículos (2024).pdf
Las marcas automotrices con más ventas de vehículos (2024).pdfJC Díaz Herrera
 
Las familias más ricas del sionismo en el siglo XXI.pdf
Las familias más ricas del sionismo en el siglo XXI.pdfLas familias más ricas del sionismo en el siglo XXI.pdf
Las familias más ricas del sionismo en el siglo XXI.pdfJC Díaz Herrera
 
Evolución de la fortuna de la familia Slim (1994-2024).pdf
Evolución de la fortuna de la familia Slim (1994-2024).pdfEvolución de la fortuna de la familia Slim (1994-2024).pdf
Evolución de la fortuna de la familia Slim (1994-2024).pdfJC Díaz Herrera
 
Posiciones del IDH a nivel global en México (1982-2024).pdf
Posiciones del IDH a nivel global en México (1982-2024).pdfPosiciones del IDH a nivel global en México (1982-2024).pdf
Posiciones del IDH a nivel global en México (1982-2024).pdfJC Díaz Herrera
 
Las mujeres más ricas del mundo (2024).pdf
Las mujeres más ricas del mundo (2024).pdfLas mujeres más ricas del mundo (2024).pdf
Las mujeres más ricas del mundo (2024).pdfJC Díaz Herrera
 

Último (20)

Investigacion cualitativa y cuantitativa....pdf
Investigacion cualitativa y cuantitativa....pdfInvestigacion cualitativa y cuantitativa....pdf
Investigacion cualitativa y cuantitativa....pdf
 
INTRODUCCION-A-LOS-ALGORITMOS-BASICOS.pptx
INTRODUCCION-A-LOS-ALGORITMOS-BASICOS.pptxINTRODUCCION-A-LOS-ALGORITMOS-BASICOS.pptx
INTRODUCCION-A-LOS-ALGORITMOS-BASICOS.pptx
 
Presentacion-Prevencion-Incendios-Forestales.pdf
Presentacion-Prevencion-Incendios-Forestales.pdfPresentacion-Prevencion-Incendios-Forestales.pdf
Presentacion-Prevencion-Incendios-Forestales.pdf
 
Gestión Logística maria palmira guti cabajal
Gestión Logística maria palmira guti cabajalGestión Logística maria palmira guti cabajal
Gestión Logística maria palmira guti cabajal
 
Cesar Vilchis Vieyra Cesar Vilchis Vieyra
Cesar Vilchis Vieyra  Cesar Vilchis VieyraCesar Vilchis Vieyra  Cesar Vilchis Vieyra
Cesar Vilchis Vieyra Cesar Vilchis Vieyra
 
Industria musical de EUA vs Industria musical Corea del Sur (2024).pdf
Industria musical de EUA vs Industria musical Corea del Sur (2024).pdfIndustria musical de EUA vs Industria musical Corea del Sur (2024).pdf
Industria musical de EUA vs Industria musical Corea del Sur (2024).pdf
 
COMUNICADO PARA TODO TIPO DE REUNIONES .
COMUNICADO PARA TODO TIPO DE REUNIONES .COMUNICADO PARA TODO TIPO DE REUNIONES .
COMUNICADO PARA TODO TIPO DE REUNIONES .
 
llllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllll
 
Los primeros 60 países por IDH en el año (2024).pdf
Los primeros 60 países por IDH en el año (2024).pdfLos primeros 60 países por IDH en el año (2024).pdf
Los primeros 60 países por IDH en el año (2024).pdf
 
Tipos de Educacion en diferentes partes del mundo.pptx
Tipos de Educacion en diferentes partes del mundo.pptxTipos de Educacion en diferentes partes del mundo.pptx
Tipos de Educacion en diferentes partes del mundo.pptx
 
presentacion de conjuntos para primaria.ppt
presentacion de conjuntos para primaria.pptpresentacion de conjuntos para primaria.ppt
presentacion de conjuntos para primaria.ppt
 
Panorama Sociodemográfico de México 2020: GUANAJUATO
Panorama Sociodemográfico de México 2020: GUANAJUATOPanorama Sociodemográfico de México 2020: GUANAJUATO
Panorama Sociodemográfico de México 2020: GUANAJUATO
 
Novelas Turcas vs Series de EUA en audiencia (2024).pdf
Novelas Turcas vs Series de EUA en audiencia  (2024).pdfNovelas Turcas vs Series de EUA en audiencia  (2024).pdf
Novelas Turcas vs Series de EUA en audiencia (2024).pdf
 
INFORME DE EVALUACIÓN DE LOS REQUERIMIENTOS.pdf
INFORME DE EVALUACIÓN DE LOS REQUERIMIENTOS.pdfINFORME DE EVALUACIÓN DE LOS REQUERIMIENTOS.pdf
INFORME DE EVALUACIÓN DE LOS REQUERIMIENTOS.pdf
 
Posiciones de México en el PNB PPA per cápita (1982-2024).pdf
Posiciones de México en el PNB PPA per cápita (1982-2024).pdfPosiciones de México en el PNB PPA per cápita (1982-2024).pdf
Posiciones de México en el PNB PPA per cápita (1982-2024).pdf
 
Las marcas automotrices con más ventas de vehículos (2024).pdf
Las marcas automotrices con más ventas de vehículos (2024).pdfLas marcas automotrices con más ventas de vehículos (2024).pdf
Las marcas automotrices con más ventas de vehículos (2024).pdf
 
Las familias más ricas del sionismo en el siglo XXI.pdf
Las familias más ricas del sionismo en el siglo XXI.pdfLas familias más ricas del sionismo en el siglo XXI.pdf
Las familias más ricas del sionismo en el siglo XXI.pdf
 
Evolución de la fortuna de la familia Slim (1994-2024).pdf
Evolución de la fortuna de la familia Slim (1994-2024).pdfEvolución de la fortuna de la familia Slim (1994-2024).pdf
Evolución de la fortuna de la familia Slim (1994-2024).pdf
 
Posiciones del IDH a nivel global en México (1982-2024).pdf
Posiciones del IDH a nivel global en México (1982-2024).pdfPosiciones del IDH a nivel global en México (1982-2024).pdf
Posiciones del IDH a nivel global en México (1982-2024).pdf
 
Las mujeres más ricas del mundo (2024).pdf
Las mujeres más ricas del mundo (2024).pdfLas mujeres más ricas del mundo (2024).pdf
Las mujeres más ricas del mundo (2024).pdf
 

Extracción de datos con Python (webscraping

  • 1. #MéridaTechMeetup Extracción de datos con Python (webscraping) Ernesto Crespo ● Blog: http://blog.crespo.org.ve ● Blog: http://ecrespo.github.io ● Github: https://github.com/ecrespo ● Bitbucket https://bitbucket.org/ecrespo ● Twitter: https://twitter.com/_seraph1
  • 2. #MéridaTechMeetup Extracción de datos con Python (webscraping) "Somos como enanos a los hombros de gigantes. Podemos ver más, y más lejos que ellos, no porque la agudeza de nuestra vista ni por la altura de nuestro cuerpo, sino porque somos levantados por su gran altura". Bernardo de Chartres "Extración de datos con python (webscraping) " by Ernesto Crespo is licensed under a Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional License.
  • 3. #MéridaTechMeetup Extracción de datos con Python (webscraping) Agenda: ● ¿Qué es webscraping? ● ¿Qué es Python? ● Gobierno Abierto ● Datos Abiertos ● Herramientas de Python para extraer datos de páginas web ● Extraer datos con Beautiful Soup 4 ● Extraer datos con Pyquery ● Extraer datos con Scrapperwiki ● Extraer datos conWebscraping ● Extraer datos con el Framework Scrapy ● Iniciativas de comunidades
  • 4. #MéridaTechMeetup ¿Qué es webscraping? Es el proceso de recolección o extracción de datos de páginas web de forma automática, es un campo muy activo y en desarrollo que comparte objetivos con la web semántica, el procesamiento de texto, inteligencia artificial e interacción humano computador.
  • 5. #MéridaTechMeetup ¿Qué es Python? Lenguaje de programación interpretado multiparadigma, soporta orientación a objetos, programación imperativa y, en menor medida programación funcional. Usa tipado dinámico y es multiplataforma. Es administrado por la Python Software Foundation y posee una Licencia de código Abierto Python Software Foundation License que es compatible con la Licencia Pública GNU. http://www.python.org
  • 6. #MéridaTechMeetup Gobierno Abierto: ● Datos Abierto ● Procesos Abiertos ● Redes Sociales ● Colaboración ● Participación ciudadana
  • 7. #MéridaTechMeetup Datos Abiertos (Datos vinculados): Es una filosofía y práctica que persigue que determinados datos esten disponibles de forma libre para todo el mundo, sin restricciones de derecho de autor, de patentes o de otros mecanismos de control.
  • 8. #MéridaTechMeetup Pero hasta ahora no hay muchos datos abiertos...
  • 9. #MéridaTechMeetup Herramientas de Python para extraer datos de páginas web ● Urllib y urlopen ● Beautiful Soup 4 ● Python Mechanize (basado en perl mechanize) ● Pyquery ● Scrapermark ● ScrapperWiki ● Webscraping ● Scrapy : Framework para la extracción de datos de forma automatizada ● Selenium (para próxima versión de la presentación)
  • 10. #MéridaTechMeetup Sitio a extraer datos:www.timeanddate.com
  • 11. #MéridaTechMeetup Sitio a extraer datos:www.timeanddate.com
  • 12. #MéridaTechMeetup Sitio a extraer datos:www.timeanddate.com
  • 13. #MéridaTechMeetup Sitio a extraer datos:www.timeanddate.com con Beautiful Soup 4 #!/usr/bin/env python #Importar urllib2 y BeautifulSoup import urllib2 from BeautifulSoup import BeautifulSoup #Se crea la instancia y se abre el url de timeanddate #buscando la informacion de la hora de salir el sol en Venezuela soup = BeautifulSoup(urllib2.urlopen('http://www.timeanddate.com/worldclock/astronomy.html?n=58').read()) #Se busca la palabra table, y de ahi class y se busca el contenido #de cada columna de la tabla. for row in soup('table', {'class': 'spad'})[0].tbody('tr'): tds = row('td') #Se muestra la fecha y hora de la salida del sol print tds[0].string, tds[1].string El resultado de la ejecución es la siguiente: 23 Oct 2013 05:47 24 Oct 2013 05:47 25 Oct 2013 05:47 26 Oct 2013 05:48 27 Oct 2013 05:48 28 Oct 2013 05:48 29 Oct 2013 05:48
  • 14. #MéridaTechMeetup Sitio a extraer datos:www.timeanddate.com con pyquery #!/usr/bin/env python #importar pyquery from pyquery import * #Se Crea la instancia de la Clase PyQuery pasando el url de #timeanddate. html = PyQuery(url='http://www.timeanddate.com/worldclock/astronomy.html?n=58') #Se busca el tag html de la tabla. #Recibe todos los elementos de la tabla. trs = html('table.spad tbody tr') #Se muestra los elementos de la tabla. print trs #Se recorre los elementos de la tabla for tr in trs: tds = tr.getchildren() print tds[1].text, tds[2].text El resultado de la ejecución del script se muestra a continuación: 05:47 17:36 05:47 17:36 05:48 17:35 05:48 17:35 05:48 17:35 05:48 17:34 05:48 17:34
  • 15. #MéridaTechMeetup Sitio a extraer datos:www.timeanddate.com con ScrapperWiki #!/usr/bin/env python #importar scraperwiki import scraperwiki #importar lxml.html import lxml.html #Url de la pagina timeanddate de la #info de Venezuela. url = "http://www.timeanddate.com/worldclock/astronomy.html?n=58" #se crea la instancia de la clase scrape pasando el #url del sitio a extraer la informacion. html = scraperwiki.scrape(url) #Se busca en el codigo html de la pagina root = lxml.html.fromstring(html) #Se crea una lista que almacenara los diccionarios conteniendo #la informacion que se necesita lista = [] #Se busca el tag html tbody y tr. #Esto genera una lista con el contenido del tbody.Esto #se recorre dicha lista for tr in root.cssselect("tbody tr "): #Se selecciona la informacion que aparece en #el tag html td tds = tr.cssselect("td") #Se guarda la informacion en un diccionario Datos = { 'fecha': tds[0].text_content(), 'amanecer': tds[1].text_content(), 'atardecer': tds[2].text_content() } #Se agrega los datos a la lista lista.append(datos) #Se muestra la lista en pantalla for i in lista: print i El resultado de la ejecución del script a continuación: {'fecha': '26 Oct 2013', 'atardecer': '17:35', 'amanecer': '05:48'} {'fecha': '27 Oct 2013', 'atardecer': '17:35', 'amanecer': '05:48'} {'fecha': '28 Oct 2013', 'atardecer': '17:35', 'amanecer': '05:48'} {'fecha': '29 Oct 2013', 'atardecer': '17:34', 'amanecer': '05:48'} {'fecha': '30 Oct 2013', 'atardecer': '17:34', 'amanecer': '05:48'} {'fecha': '31 Oct 2013', 'atardecer': '17:34', 'amanecer': '05:48'} {'fecha': '1 Nov 2013', 'atardecer': '17:33', 'amanecer': '05:49'}
  • 16. #MéridaTechMeetup Sitio a extraer datos:www.timeanddate.com con Webscraping #!/usr/bin/env python #De webscraping se importa download y xpath from webscraping import download, xpath #Se define la instancia Download D = download.Download() #Se obtiene la informacion de la salida y ocultamiento del #sol en Venezuela desde la pagina timeanddate. html = D.get('http://www.timeanddate.com/worldclock/astronomy.html?n=58') #Se busca la informacion en la tabla donde se muestra. for row in xpath.search(html, '//table[@class="spad"]/tbody/tr'): #Se busca en la fila el tag /td cols = xpath.search(row, '/td') #Se muestra la informacion en pantalla print 'Amanecer: %s, Atardecer: %s' % (cols[1], cols[2]) A continuación se muestra el resultado de la ejecución del script: Amanecer: 05:47, Atardecer: 17:36 Amanecer: 05:47, Atardecer: 17:36 Amanecer: 05:47, Atardecer: 17:36 Amanecer: 05:48, Atardecer: 17:35 Amanecer: 05:48, Atardecer: 17:35 Amanecer: 05:48, Atardecer: 17:35 Amanecer: 05:48, Atardecer: 17:34
  • 17. #MéridaTechMeetup Extracción de datos con el Framework Scrapy ● Extracción de datos de páginas web con scrapy http://blog.crespo.org.ve/2015/01/extraccion-de-datos-de-paginas-web-con.html ● Extracción de datos de páginas web con scrapy y MongoDB http://blog.crespo.org.ve/2015/01/extraccion-de-datos-de-paginas-web-con_2.html
  • 21. #MéridaTechMeetup ¿Preguntas? "Si he logrado ver más lejos, ha sido porque he subido a hombros de gigantes". Isaac Newton Descarga de la presentación: http://www.slideshare.net/ecrespo/webscraping Blog: http://blog.crespo.org.ve/search/label/webscraping