Taller de Crawling Web en la plataforma KeepCoding
- CrawlingWeb-KeepCoding
- 1. Introducción
- 2. Crawler
- 3. Scrapy
- 4. Data handling / formatting
- 5. Scrapping y Crawling
- 5. Robots.txt
- Para más info visitar este enlace
- Google Colaboratory
- Scrapy
Un rastreador web, indexador web, indizador web o araña web es un programa informático que inspecciona las páginas del World Wide Web de forma metódica y automatizada. Uno de los usos más frecuentes que se les da consiste en crear una copia de todas las páginas web visitadas para su procesado posterior por un motor de búsqueda que indexa las páginas proporcionando un sistema de búsquedas rápido. Las arañas web suelen ser bots.
- No es hackear.
- No se puede llegar a todas las páginas webs/países.
- No es un proceso complejo. Se suelen romper/morir mucho debido al constante cambio de las webs.
- No suele ser el objetivo generar dinero.
- BigData
- Inteligencia artificial
- Índice de costes de productos
- Suele simular/causar ataques DoS
- Post-procesamiento, motores de recomendación
- Importante para temas SEO
- PublicRecordsNOW
- Baratukin
- Scrapy es un framework escrito en Python utilizado para extraer datos de sitios webs.
- Para extraer estos datos se pueden utilizar expresiones regulares, XPath, buscar mediante clases/estilos CSS, etc.
import scrapy
import json
class BlogSpider(scrapy.Spider):
name = 'blogspider'
# Podeis cambiar la url inicial por otra u otras paginas
start_urls = ['https://blog.scrapinghub.com']
# con esto limito no hacer mas de 10 ejecuciones
COUNT_MAX = 10
count = 0
def parse(self, response):
# Aqui scrapeamos los datos y los imprimimos a un fichero
for article in response.css('div.post-item'):
title_text = article.css('div.post-header h2 a ::text').extract_first().strip().replace(',', '').replace('.', '')
extract_text = article.css('div.post-content p ::text').extract_first()
if extract_text is not None:
extract_text = extract_text.strip().replace(',', '').replace('.', '')
# Print a un fichero
print(f"{title_text}, {extract_text}\n", file=filep)
# Aqui hacemos crawling (con el follow)
for next_page in response.css('a.next-posts-link'):
self.count = self.count + 1
if (self.count < self.COUNT_MAX):
yield response.follow(next_page, self.parse)
- Cómo se van a tratar los datos extraídos.
- HTML: scrapy en cloud.
- Json: archivos enviados a Google Cloud Storage o Amazon S3.
- Mongo: MongoDB en Google Cloud Compute Engine o AWS EC2.
- Scrapping: una página web a la que se le ejecuta un scraper y produce datos (xml, csv, etc).
- Crawler: proceso que ve cuántos links hay en una web y genera una lista e indexa y guarda en una base de datos.
- Fichero que contiene reglas que dice que se quiere permitir (o no) a nivel de crawlers, bots, etc.
- Si alguna web tiene disallow en alguna página o en la web completa, Scrapy no puede seguir con el procesos de crawling.