(Parte III) · Angel Pablo Hinojosa Scraping y Obtención de Datos para Big (y no tan Big) Data...
Transcript of (Parte III) · Angel Pablo Hinojosa Scraping y Obtención de Datos para Big (y no tan Big) Data...
![Page 1: (Parte III) · Angel Pablo Hinojosa Scraping y Obtención de Datos para Big (y no tan Big) Data (Parte III)](https://reader034.fdocuments.net/reader034/viewer/2022050406/5f8325148ddaeb1a6e2dd073/html5/thumbnails/1.jpg)
Angel Pablo Hinojosa
Scraping y Obtención de Datos
para Big (y no tan Big) Data
(Parte III)
![Page 2: (Parte III) · Angel Pablo Hinojosa Scraping y Obtención de Datos para Big (y no tan Big) Data (Parte III)](https://reader034.fdocuments.net/reader034/viewer/2022050406/5f8325148ddaeb1a6e2dd073/html5/thumbnails/2.jpg)
Trabajar en remoto
Conectando con servidores:
FTP(con Filezilla)
cabas.ugr.es
![Page 3: (Parte III) · Angel Pablo Hinojosa Scraping y Obtención de Datos para Big (y no tan Big) Data (Parte III)](https://reader034.fdocuments.net/reader034/viewer/2022050406/5f8325148ddaeb1a6e2dd073/html5/thumbnails/3.jpg)
Trabajar en remoto
(not in Kansas anymore)
![Page 4: (Parte III) · Angel Pablo Hinojosa Scraping y Obtención de Datos para Big (y no tan Big) Data (Parte III)](https://reader034.fdocuments.net/reader034/viewer/2022050406/5f8325148ddaeb1a6e2dd073/html5/thumbnails/4.jpg)
Trabajar en remoto
Conectando con servidores:
SSH(con PuTty)
![Page 5: (Parte III) · Angel Pablo Hinojosa Scraping y Obtención de Datos para Big (y no tan Big) Data (Parte III)](https://reader034.fdocuments.net/reader034/viewer/2022050406/5f8325148ddaeb1a6e2dd073/html5/thumbnails/5.jpg)
Shell de UNIX básica:
● ls● cd
● cat● more● less
● touch● rm● mv
![Page 6: (Parte III) · Angel Pablo Hinojosa Scraping y Obtención de Datos para Big (y no tan Big) Data (Parte III)](https://reader034.fdocuments.net/reader034/viewer/2022050406/5f8325148ddaeb1a6e2dd073/html5/thumbnails/6.jpg)
Shell de UNIX básica:
● uname● top
● grep● wc● less● sort
● nano● man
![Page 7: (Parte III) · Angel Pablo Hinojosa Scraping y Obtención de Datos para Big (y no tan Big) Data (Parte III)](https://reader034.fdocuments.net/reader034/viewer/2022050406/5f8325148ddaeb1a6e2dd073/html5/thumbnails/7.jpg)
Python (aún más) básico
Hola mundo, abrir ficheros y poco más
python miprograma.py
![Page 8: (Parte III) · Angel Pablo Hinojosa Scraping y Obtención de Datos para Big (y no tan Big) Data (Parte III)](https://reader034.fdocuments.net/reader034/viewer/2022050406/5f8325148ddaeb1a6e2dd073/html5/thumbnails/8.jpg)
Scrapy
Modo interactivo
scrapy shell "URL"
![Page 9: (Parte III) · Angel Pablo Hinojosa Scraping y Obtención de Datos para Big (y no tan Big) Data (Parte III)](https://reader034.fdocuments.net/reader034/viewer/2022050406/5f8325148ddaeb1a6e2dd073/html5/thumbnails/9.jpg)
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')
![Page 10: (Parte III) · Angel Pablo Hinojosa Scraping y Obtención de Datos para Big (y no tan Big) Data (Parte III)](https://reader034.fdocuments.net/reader034/viewer/2022050406/5f8325148ddaeb1a6e2dd073/html5/thumbnails/10.jpg)
Scrapy
Modo interactivo:
fetch(“URL”)view(response)quit
![Page 11: (Parte III) · Angel Pablo Hinojosa Scraping y Obtención de Datos para Big (y no tan Big) Data (Parte III)](https://reader034.fdocuments.net/reader034/viewer/2022050406/5f8325148ddaeb1a6e2dd073/html5/thumbnails/11.jpg)
Scrapy
Nuestro primer scraper:
http://doc.scrapy.org/en/latest/intro/tutorial.html
![Page 12: (Parte III) · Angel Pablo Hinojosa Scraping y Obtención de Datos para Big (y no tan Big) Data (Parte III)](https://reader034.fdocuments.net/reader034/viewer/2022050406/5f8325148ddaeb1a6e2dd073/html5/thumbnails/12.jpg)
Scrapy
Nuestro primer scraper:
scrapy startproject tutorial
![Page 13: (Parte III) · Angel Pablo Hinojosa Scraping y Obtención de Datos para Big (y no tan Big) Data (Parte III)](https://reader034.fdocuments.net/reader034/viewer/2022050406/5f8325148ddaeb1a6e2dd073/html5/thumbnails/13.jpg)
Scrapy
Editamos items.py:
import scrapy
class DmozItem(scrapy.Item):
title = scrapy.Field()
link = scrapy.Field()
desc = scrapy.Field()
![Page 14: (Parte III) · Angel Pablo Hinojosa Scraping y Obtención de Datos para Big (y no tan Big) Data (Parte III)](https://reader034.fdocuments.net/reader034/viewer/2022050406/5f8325148ddaeb1a6e2dd073/html5/thumbnails/14.jpg)
ScrapyCreamos dmoz_spider.py
import scrapy
class DmozSpider(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/"
]
def parse(self, response):
filename = response.url.split("/")[2] + '.html'
with open(filename, 'wb') as f:
f.write(response.body)
![Page 15: (Parte III) · Angel Pablo Hinojosa Scraping y Obtención de Datos para Big (y no tan Big) Data (Parte III)](https://reader034.fdocuments.net/reader034/viewer/2022050406/5f8325148ddaeb1a6e2dd073/html5/thumbnails/15.jpg)
Scrapy
Ejecutamos el scraper:
scrapy crawl dmoz
![Page 16: (Parte III) · Angel Pablo Hinojosa Scraping y Obtención de Datos para Big (y no tan Big) Data (Parte III)](https://reader034.fdocuments.net/reader034/viewer/2022050406/5f8325148ddaeb1a6e2dd073/html5/thumbnails/16.jpg)
Scrapy
Ejecutamos el scraper:
scrapy crawl dmoz
![Page 17: (Parte III) · Angel Pablo Hinojosa Scraping y Obtención de Datos para Big (y no tan Big) Data (Parte III)](https://reader034.fdocuments.net/reader034/viewer/2022050406/5f8325148ddaeb1a6e2dd073/html5/thumbnails/17.jpg)
Scrapysegunda versión de dmoz_spider.py
import scrapy
class DmozSpider(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/"
]
def parse(self, response):
for sel in response.xpath('//ul/li'):
title = sel.xpath('a/text()').extract()
link = sel.xpath('a/@href').extract()
desc = sel.xpath('text()').extract()
print title, link, desc
![Page 18: (Parte III) · Angel Pablo Hinojosa Scraping y Obtención de Datos para Big (y no tan Big) Data (Parte III)](https://reader034.fdocuments.net/reader034/viewer/2022050406/5f8325148ddaeb1a6e2dd073/html5/thumbnails/18.jpg)
Scrapy
Ejecutamos (otra vez) el scraper:
scrapy crawl dmoz
scrapy crawl dmoz > archivo
scrapy crawl nolog dmoz
![Page 19: (Parte III) · Angel Pablo Hinojosa Scraping y Obtención de Datos para Big (y no tan Big) Data (Parte III)](https://reader034.fdocuments.net/reader034/viewer/2022050406/5f8325148ddaeb1a6e2dd073/html5/thumbnails/19.jpg)
Scrapytercera versión de dmoz_spider.py
import scrapy, urlparse
from tutorial.items import DmozItem
class DmozSpider(scrapy.Spider):
name = "dmoz"
allowed_domains = ["dmoz.org"]
start_urls = [
"http://www.dmoz.org/Computers/Programming/Languages/Python/",
]
def parse(self, response):
for href in response.css("ul.directory.dircol > li > a::attr('href')"):
url = urlparse.urljoin(response.url, href.extract())
yield scrapy.Request(url, callback=self.parse_dir_contents)
def parse_dir_contents(self, response):
for sel in response.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()
yield item
![Page 20: (Parte III) · Angel Pablo Hinojosa Scraping y Obtención de Datos para Big (y no tan Big) Data (Parte III)](https://reader034.fdocuments.net/reader034/viewer/2022050406/5f8325148ddaeb1a6e2dd073/html5/thumbnails/20.jpg)
Scrapy
Ejecutamos (otra vez) el scraper:
scrapy crawl dmoz
![Page 21: (Parte III) · Angel Pablo Hinojosa Scraping y Obtención de Datos para Big (y no tan Big) Data (Parte III)](https://reader034.fdocuments.net/reader034/viewer/2022050406/5f8325148ddaeb1a6e2dd073/html5/thumbnails/21.jpg)
Gracias
(Ruegos y preguntas)
![Page 22: (Parte III) · Angel Pablo Hinojosa Scraping y Obtención de Datos para Big (y no tan Big) Data (Parte III)](https://reader034.fdocuments.net/reader034/viewer/2022050406/5f8325148ddaeb1a6e2dd073/html5/thumbnails/22.jpg)
http://www.psicobyte.com
@psicobyte_
© Angel Pablo Hinojosa Gutiérrez