SlideShare a Scribd company logo
1 of 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

More Related Content

What's hot

Bases de datos, Tipos e importancia
Bases de datos, Tipos e importanciaBases de datos, Tipos e importancia
Bases de datos, Tipos e importanciagriselcesar
 
Modelo entidad relacion y tablas en access
Modelo entidad relacion y tablas en accessModelo entidad relacion y tablas en access
Modelo entidad relacion y tablas en accessMiguel Pustela Jara
 
Switch de protocolo
Switch de protocoloSwitch de protocolo
Switch de protocoloanyela95
 
Tecnicas y herramientas de desarrollo de software(1)
Tecnicas y herramientas de desarrollo de software(1)Tecnicas y herramientas de desarrollo de software(1)
Tecnicas y herramientas de desarrollo de software(1)Gustavo Gualsema
 
Analisis y determinacion de requerimientos
Analisis y determinacion de requerimientosAnalisis y determinacion de requerimientos
Analisis y determinacion de requerimientosYesith Valencia
 
Introduccion orientación a objetos
Introduccion orientación a objetosIntroduccion orientación a objetos
Introduccion orientación a objetosUniandes
 
Todo Sobre El Dns
Todo Sobre El DnsTodo Sobre El Dns
Todo Sobre El DnsEdwin Cusco
 

What's hot (14)

Bases de datos, Tipos e importancia
Bases de datos, Tipos e importanciaBases de datos, Tipos e importancia
Bases de datos, Tipos e importancia
 
Modelo entidad relacion y tablas en access
Modelo entidad relacion y tablas en accessModelo entidad relacion y tablas en access
Modelo entidad relacion y tablas en access
 
1. configuracion del servidor dhcp en linux
1. configuracion del servidor dhcp en linux1. configuracion del servidor dhcp en linux
1. configuracion del servidor dhcp en linux
 
Switch de protocolo
Switch de protocoloSwitch de protocolo
Switch de protocolo
 
Firewall
FirewallFirewall
Firewall
 
Tecnicas y herramientas de desarrollo de software(1)
Tecnicas y herramientas de desarrollo de software(1)Tecnicas y herramientas de desarrollo de software(1)
Tecnicas y herramientas de desarrollo de software(1)
 
MYSQL
MYSQLMYSQL
MYSQL
 
Restricciones bd
Restricciones bdRestricciones bd
Restricciones bd
 
Analisis y determinacion de requerimientos
Analisis y determinacion de requerimientosAnalisis y determinacion de requerimientos
Analisis y determinacion de requerimientos
 
silabo de Procesamiento de datos
silabo de Procesamiento de datos silabo de Procesamiento de datos
silabo de Procesamiento de datos
 
Introduccion orientación a objetos
Introduccion orientación a objetosIntroduccion orientación a objetos
Introduccion orientación a objetos
 
AI05 Analisis forense de sistemas
AI05 Analisis forense de sistemasAI05 Analisis forense de sistemas
AI05 Analisis forense de sistemas
 
Hydra
HydraHydra
Hydra
 
Todo Sobre El Dns
Todo Sobre El DnsTodo Sobre El Dns
Todo Sobre El Dns
 

Viewers also liked

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
 

Viewers also liked (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 to 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 to 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)
 

More from 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
 

More from 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?
 

Recently uploaded

Cuáles son las características biológicas que están marcadas en tu individual...
Cuáles son las características biológicas que están marcadas en tu individual...Cuáles son las características biológicas que están marcadas en tu individual...
Cuáles son las características biológicas que están marcadas en tu individual...israel garcia
 
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
 
Partes y elementos de una iglesia básicos
Partes y elementos de una iglesia básicosPartes y elementos de una iglesia básicos
Partes y elementos de una iglesia básicosMarycarmenNuez4
 
AA CUADRO DE TEORIA DEL CASO. (1) (1).docx
AA CUADRO DE TEORIA DEL CASO. (1) (1).docxAA CUADRO DE TEORIA DEL CASO. (1) (1).docx
AA CUADRO DE TEORIA DEL CASO. (1) (1).docxLuisAngelYomonaYomon
 
Listas de Fundamentos de Programación 2024
Listas de Fundamentos de Programación 2024Listas de Fundamentos de Programación 2024
Listas de Fundamentos de Programación 2024AndrsReinosoSnchez1
 
Triptico-del-Bullying qué es, cómo detectarlo, donde acudir
Triptico-del-Bullying qué es, cómo detectarlo, donde acudirTriptico-del-Bullying qué es, cómo detectarlo, donde acudir
Triptico-del-Bullying qué es, cómo detectarlo, donde acudirluis809799
 
Premios_nobel_por_grupo_racial_ (2024).pdf
Premios_nobel_por_grupo_racial_ (2024).pdfPremios_nobel_por_grupo_racial_ (2024).pdf
Premios_nobel_por_grupo_racial_ (2024).pdfJC Díaz Herrera
 
CNEB-CURRICULO NACIONAL DE EDUCACION BASICA
CNEB-CURRICULO NACIONAL DE EDUCACION BASICACNEB-CURRICULO NACIONAL DE EDUCACION BASICA
CNEB-CURRICULO NACIONAL DE EDUCACION BASICAYOSHELINSARAIMAMANIS2
 
triptico-de-las-drogas en la adolescencia
triptico-de-las-drogas en la adolescenciatriptico-de-las-drogas en la adolescencia
triptico-de-las-drogas en la adolescenciaferg6120
 
Los más ricos administradores de fondo de cobertura (1968-2024).pdf
Los más ricos administradores de fondo de cobertura (1968-2024).pdfLos más ricos administradores de fondo de cobertura (1968-2024).pdf
Los más ricos administradores de fondo de cobertura (1968-2024).pdfJC Díaz Herrera
 
PIB PERÚ datos y análisis de los últimos años
PIB PERÚ datos y análisis de los últimos añosPIB PERÚ datos y análisis de los últimos años
PIB PERÚ datos y análisis de los últimos añosEstefaniaRojas54
 
PANTEÓN DE Paris en historia de la arquitectura
PANTEÓN DE Paris en historia de la arquitecturaPANTEÓN DE Paris en historia de la arquitectura
PANTEÓN DE Paris en historia de la arquitecturaRosaHurtado26
 
Presentacion-Prevencion-Incendios-Forestales.pdf
Presentacion-Prevencion-Incendios-Forestales.pdfPresentacion-Prevencion-Incendios-Forestales.pdf
Presentacion-Prevencion-Incendios-Forestales.pdfDodiAcuaArstica
 
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
 
Países por velocidad de sus misiles hipersónicos (2024).pdf
Países por velocidad de sus misiles hipersónicos  (2024).pdfPaíses por velocidad de sus misiles hipersónicos  (2024).pdf
Países por velocidad de sus misiles hipersónicos (2024).pdfJC Díaz Herrera
 
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
 
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
 
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
 
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
 
Qué es un Histograma estadístico teoria y problema
Qué es un Histograma estadístico teoria y problemaQué es un Histograma estadístico teoria y problema
Qué es un Histograma estadístico teoria y problemaJoellyAlejandraRodrg
 

Recently uploaded (20)

Cuáles son las características biológicas que están marcadas en tu individual...
Cuáles son las características biológicas que están marcadas en tu individual...Cuáles son las características biológicas que están marcadas en tu individual...
Cuáles son las características biológicas que están marcadas en tu individual...
 
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
 
Partes y elementos de una iglesia básicos
Partes y elementos de una iglesia básicosPartes y elementos de una iglesia básicos
Partes y elementos de una iglesia básicos
 
AA CUADRO DE TEORIA DEL CASO. (1) (1).docx
AA CUADRO DE TEORIA DEL CASO. (1) (1).docxAA CUADRO DE TEORIA DEL CASO. (1) (1).docx
AA CUADRO DE TEORIA DEL CASO. (1) (1).docx
 
Listas de Fundamentos de Programación 2024
Listas de Fundamentos de Programación 2024Listas de Fundamentos de Programación 2024
Listas de Fundamentos de Programación 2024
 
Triptico-del-Bullying qué es, cómo detectarlo, donde acudir
Triptico-del-Bullying qué es, cómo detectarlo, donde acudirTriptico-del-Bullying qué es, cómo detectarlo, donde acudir
Triptico-del-Bullying qué es, cómo detectarlo, donde acudir
 
Premios_nobel_por_grupo_racial_ (2024).pdf
Premios_nobel_por_grupo_racial_ (2024).pdfPremios_nobel_por_grupo_racial_ (2024).pdf
Premios_nobel_por_grupo_racial_ (2024).pdf
 
CNEB-CURRICULO NACIONAL DE EDUCACION BASICA
CNEB-CURRICULO NACIONAL DE EDUCACION BASICACNEB-CURRICULO NACIONAL DE EDUCACION BASICA
CNEB-CURRICULO NACIONAL DE EDUCACION BASICA
 
triptico-de-las-drogas en la adolescencia
triptico-de-las-drogas en la adolescenciatriptico-de-las-drogas en la adolescencia
triptico-de-las-drogas en la adolescencia
 
Los más ricos administradores de fondo de cobertura (1968-2024).pdf
Los más ricos administradores de fondo de cobertura (1968-2024).pdfLos más ricos administradores de fondo de cobertura (1968-2024).pdf
Los más ricos administradores de fondo de cobertura (1968-2024).pdf
 
PIB PERÚ datos y análisis de los últimos años
PIB PERÚ datos y análisis de los últimos añosPIB PERÚ datos y análisis de los últimos años
PIB PERÚ datos y análisis de los últimos años
 
PANTEÓN DE Paris en historia de la arquitectura
PANTEÓN DE Paris en historia de la arquitecturaPANTEÓN DE Paris en historia de la arquitectura
PANTEÓN DE Paris en historia de la arquitectura
 
Presentacion-Prevencion-Incendios-Forestales.pdf
Presentacion-Prevencion-Incendios-Forestales.pdfPresentacion-Prevencion-Incendios-Forestales.pdf
Presentacion-Prevencion-Incendios-Forestales.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
 
Países por velocidad de sus misiles hipersónicos (2024).pdf
Países por velocidad de sus misiles hipersónicos  (2024).pdfPaíses por velocidad de sus misiles hipersónicos  (2024).pdf
Países por velocidad de sus misiles hipersónicos (2024).pdf
 
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
 
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
 
presentacion de conjuntos para primaria.ppt
presentacion de conjuntos para primaria.pptpresentacion de conjuntos para primaria.ppt
presentacion de conjuntos para primaria.ppt
 
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
 
Qué es un Histograma estadístico teoria y problema
Qué es un Histograma estadístico teoria y problemaQué es un Histograma estadístico teoria y problema
Qué es un Histograma estadístico teoria y problema
 

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