ScrapingyObtencindeDatos
paraBig(ynotanBig)Data
(ParteI)
BigData
Lo que significa
Obtencin, gestin y manipulacin de grandes
volmenes de datos.
LittleBigData
Dedndesacolainformacin?
Datos primarios:
Datos de nuestras propias fuentes: usuarios,
trfico, logs, mails, redes, aplicaciones
biomtricas...
Dedndesacolainformacin?
Datos de terceros:
Fuentes abiertas, proveedores de datasets
(Por ejemplo http://opendata.ugr.es/ )
...y scraping
Formatos
No todos los formatos son iguales:
Elinfiernodelosformatos
y el PDF como ejemplo de todo lo malo
http://sl.ugr.es/bigdataPDF
Elinfiernodelosformatos
Ejemplos:
PRIMER_TRIMESTRE_2015.pdf
presupuesto_ayuntamiento_2015.pdf
presupuesto_parque_ciencias_2015.pdf
tabla.pdf
Elinfiernodelosformatos
y el PDF como ejemplo de todo lo malo
http://sl.ugr.es/bigdataPDF
Elinfiernodelosformatos
Son tus amigos:
JSON
CSV
Herramientasonline:
Multiconversor:
http://www.cometdocs.com/
(con Limitaciones si no pagas)
Herramientasonline:
Extraer tablas de PDF:
https://pdftables.com/
(Slo lee las tablas)
Herramientasonline:
PDF a Excell (y otros):
https://www.pdftoexcelonline.com/
Lo enva a tu correo
Herramientasonline:
OCR de PDF
http://www.onlineocr.net/
(una sola pagina)
Herramientasonline:
OCR de PDF
http://freeonlineocr.com/
(hasta 10 pginas)
NOTA:NingnOCResbueno
Lento, complejo, propenso a errores
Requiere supervisin y revisin posterior
Huye del OCR como de la peste
Enlocal
Tabula
http://tabula.technology/
(fcil y simple, pero son OCR)
Conversordeformatos
Pandoc
pandoc.org/
(no convierte DE PDF)
Paraprogramadores(Python)
pdfminer
https://euske.github.io/pdfminer/
pypdfocr
https://pypi.python.org/pypi/pypdfocr
Gracias
(Ruegos y preguntas)
AngelPabloHinojosa
ScrapingyObtencindeDatos
paraBig(ynotanBig)Data
(ParteII)
OrgenesdeDatos
OrgenesdeDatos
http://opendata.ugr.es
(Y licencias)
OrgenesdeDatos
Catlogo nacional:
http://datos.gob.es/catalogo
OrgenesdeDatos
Catlogo europeo:
http://opendata.europa.eu/es/data/
OrgenesdeDatos
Catlogo USA:
http://opendata.europa.eu/es/data/
OrgenesdeDatos
Mapa de orgenes:
http://eip.lcc.uma.es/opendata/
(poco actualizado)
WebScraping
Rascar datos de Webs
WebScraping
HTML
La materia de la que estn hechas las webs
http://www.psicobyte.com/html/curso/
(Tutorial de HTML)
WebScraping
Import.io
Rudimentario, pero a veces basta
https://import.io/
WebScraping
Scraper (plugin de Chrome)
http://www.psicobyte.com/html/curso/
WebScraping
Prctica de Scraper
http://osl.ugr.es
(...y XPath)
WebScraping
Caso prctico:
Buscamos radares?
http://www.dgt.es/es/el
trafico/controlde
velocidad/granada/
WebScraping
Usando Google Docs
https://docs.google.com
(Google Spreadsheets, concretamente)
WebScraping
Usando Google Docs (importar feeds)
=IMPORTFEED(URL)
Espera Qu es un feed?
WebScraping
Usando Google Docs (importar feeds)
http://osl.ugr.es/feed/
WebScraping
Usando Google Docs (importar HTML -listas-)
=IMPORTHTML(URL,list,N)
WebScraping
Usando Google Docs (importar HTML -listas-)
http://www.dmoz.org/Computers/Internet/
WebScraping
Usando Google Docs (importar HTML -tablas-)
=IMPORTHTML(URL,table,N)
WebScraping
Usando Google Docs (importar HTML -tablas-)
http://www.dgt.es/es/eltrafico/control
develocidad/granada/
WebScraping
Usando Google Docs (importar HTML -tablas-)
http://www.dgt.es/es/eltrafico/control
develocidad/granada/
WebScraping
Usando Google Docs (importar XML)
=IMPORTXML(URL,table,N)
(en realidad, HTML con XPath)
WebScraping
Usando Google Docs (importar XML)
http://osl.ugr.es
//h2
//a/@href
//h2/a/@href
Gracias
(Ruegos y preguntas)
AngelPabloHinojosa
ScrapingyObtencindeDatos
paraBig(ynotanBig)Data
(ParteIII)
Trabajarenremoto
Conectando con servidores:
FTP
(con Filezilla)
cabas.ugr.es
Trabajarenremoto
Trabajarenremoto
ShelldeUNIXbsica:
ls
cd
cat
more
less
touch
rm
mv
ShelldeUNIXbsica:
uname
top
grep
wc
less
sort
nano
man
Python(anms)bsico
Hola mundo, abrir ficheros y poco ms
pythonmiprograma.py
Scrapy
Modo interactivo
scrapyshell"URL"
Scrapy
Modo interactivo:
response.xpath('//title')
response.xpath('//title').extract()
response.xpath('//h2')
response.xpath('//h2/text()').extract()
response.xpath('//a')
response.xpath('//a/@href')
Scrapy
Modo interactivo:
fetch(URL)
view(response)
quit
Scrapy
Nuestro primer scraper:
http://doc.scrapy.org/en/latest/intro
/tutorial.html
Scrapy
Nuestro primer scraper:
scrapystartprojecttutorial
Scrapy
Editamos items.py:
importscrapy
classDmozItem(scrapy.Item):
title=scrapy.Field()
link=scrapy.Field()
desc=scrapy.Field()
Scrapy
Creamos dmoz_spider.py
importscrapy
classDmozSpider(scrapy.Spider):
name="dmoz"
allowed_domains=["dmoz.org"]
start_urls=[
"http://www.dmoz.org/Computers/Programming/Languages/Python/Books/",
"http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/"
]
defparse(self,response):
filename=response.url.split("/")[2]+'.html'
withopen(filename,'wb')asf:
f.write(response.body)
Scrapy
Ejecutamos el scraper:
scrapycrawldmoz
Scrapy
Ejecutamos el scraper:
scrapycrawldmoz
Scrapy
segunda versin de dmoz_spider.py
importscrapy
classDmozSpider(scrapy.Spider):
name="dmoz"
allowed_domains=["dmoz.org"]
start_urls=[
"http://www.dmoz.org/Computers/Programming/Languages/Python/Books/",
"http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/"
]
defparse(self,response):
forselinresponse.xpath('//ul/li'):
title=sel.xpath('a/text()').extract()
link=sel.xpath('a/@href').extract()
desc=sel.xpath('text()').extract()
printtitle,link,desc
Scrapy
Ejecutamos (otra vez) el scraper:
scrapycrawldmoz
Scrapy
tercera versin de dmoz_spider.py
importscrapy,urlparse
fromtutorial.itemsimportDmozItem
classDmozSpider(scrapy.Spider):
name="dmoz"
allowed_domains=["dmoz.org"]
start_urls=[
"http://www.dmoz.org/Computers/Programming/Languages/Python/",
]
defparse(self,response):
forhrefinresponse.css("ul.directory.dircol>li>a::attr('href')"):
url=urlparse.urljoin(response.url,href.extract())
yieldscrapy.Request(url,callback=self.parse_dir_contents)
defparse_dir_contents(self,response):
forselinresponse.xpath('//ul/li'):
item=DmozItem()
item['title']=sel.xpath('a/text()').extract()
item['link']=sel.xpath('a/@href').extract()
item['desc']=sel.xpath('text()').extract()
yielditem
Scrapy
Ejecutamos (otra vez) el scraper:
scrapycrawldmoz
scrapycrawldmoz>archivo
scrapycrawlnologodmoz
Gracias
(Ruegos y preguntas)
http://www.psicobyte.com
@psicobyte
psicobyte@gmail.com