GithubHelp home page GithubHelp logo

luisramirez-m / mercadolibre-scrapy Goto Github PK

View Code? Open in Web Editor NEW
54.0 13.0 32.0 9 KB

Tutorial de Extracción de Datos en Mercado Libre con Scrapy (Framework de Python)

Python 100.00%
scrapy mercadolibre

mercadolibre-scrapy's Introduction

Tutorial Scrapy; Extraer información de Mercado Libre

Si quieres ver como se realizo este proyecto puedes verlo en video: https://goo.gl/73crqm

Si tienes alguna duda, puedes crear una pregunta en: Issues

Modificaciones:

[0.0.3] - 2017-09-13

  • Cambios para el nuevo diseño de Mercado Libre
  • Se removieron muchos campos/variables que Mercado Libre ya no usa

[0.0.2] - 2017-03-12

  • Bajar imágenes del producto  - Recuerda cambiar en el archivo settings.py tu ruta donde quieres que se descargen las imágenes:

    IMAGES_STORE = '/URL/DE/TU/DIRECTORIO/imagenes'
    

[0.0.1] - 2017-03-11

  • Primera version
  • Tutorial en video

mercadolibre-scrapy's People

Contributors

luisramirezdev avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mercadolibre-scrapy's Issues

No logro descargar datos

Hola he seguido las instruciones para probar el tutorial con dos sitios de propiedades distintos. Portal inmobiliario y toctcoc. En el primero me funciona perfectamente, pero en el segundo no logro descargar los datos. Es decir, el crawl corre pero no se porque razón no baja ningún resultado.
Este es el código:

import scrapy
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
from scrapy.exceptions import CloseSpider
from toctoc.items import ToctocItem

class ToctocSpider(CrawlSpider):
name = 'toctoc'
item_count = 0
allowed_domain = ['https://www.toctoc.com/']
start_urls = ["https://www.toctoc.com/resultados/lista/compra/departamento/metropolitana/nunoa/?moneda=2&precioDesde=0&precioHasta=0&dormitoriosDesde=&dormitoriosHasta=&banosDesde=0&banosHasta=0&estado=2&disponibilidadEntrega=&numeroDeDiasTocToc=0&superficieDesdeUtil=0&superficieHastaUtil=0&superficieDesdeConstruida=0&superficieHastaConstruida=0&superficieDesdeTerraza=0&superficieHastaTerraza=0&superficieDesdeTerreno=0&superficieHastaTerreno=0&ordenarPor=0&pagina=1&paginaInterna=1&zoom=15&idZonaHomogenea=0&atributos=&texto=%C3%91u%C3%B1oa,%20Santiago&viewport=-33.47587140329655,-70.63162737120614,-33.43281075048825,-70.57086327691881&idPoligono=33&publicador=0&temporalidad=0",
]

rules = {
Rule(LinkExtractor(allow=(),restrict_xpaths=('//ul[@Class="pagination"]/li[4]/a/span[1]'))),
Rule(LinkExtractor(allow=(),restrict_xpaths=('//div[@Class="resul"]/ul[@Class="list-res"]/li[@Class="un-ress tp1"]/a' )), callback='parse_item', follow=False)

He leído la documentación y no logro encontrar la razón del porque no se descargan los resultados.

Alguna ayuda??   Javier                  

Extracción de datos por HTTPS

Cordial Saludo,

Solicito amablemente me colabores. me encuentro estancado este por este protocolo de otro proyecto.

captura

No le encuentro solución tengo las siguientes configuraciones:
Python: Version 3.6.3
Scrapy: Version 1.5.0
Pycharm Community

Funciona en produccion?

Hola!

Si lo subes a un hosting y lo pones en produccion, te trae la info sin problema?
Pregunto ya que hice tambien una app para scrapear Mercadolibre, pero al ponerlo en produccion me lanza error 502, sin embargo, en desarrollo me funciona perfecto.

Gracias!

Problema al definir Rule de paginación

Que tal Luíz Ramirez, gran trabajo, me ha servido de mucho en mi trabajo, tengo una pregunta, cómo le harías para definir las Rule de paginación de la página de claroshop, por ejemplo: https://www.claroshop.com/categoria/20108/laptops/pagina/1

Existe la paginación, sin embargo no existe el atributo href en la etiqueta , lo construye por javascript.

¿Hay alguna forma de hacerlo funcionar? ¿Qué estrategia utilizarías?

Gracias y excelente trabajo

error with PIL

Hola, lo primero agradecer el estupendo proyecto y tutorial que realizaste, en concreto estoy realizando un mismo proyecto con la web de einforma y una lista de empresas, la cual me encantaria categorizar, pero reproduciendo tu mismo ejemplo me salta el mismo error que cuando tiro el modificado para mi caso, cuando sigo los pasos del tuorial y descargo tu git y ejecuto el scrapy me salta:

(mercado) root@kali:~/mercado/mercado# scrapy crawl mercado -t csv
/root/mercado/mercado/mercado/spiders/spider.py:6: ScrapyDeprecationWarning: Module scrapy.spider is deprecated, use scrapy.spiders instead
from scrapy.spider import CrawlSpider, Rule
2018-03-01 12:50:17 [scrapy.utils.log] INFO: Scrapy 1.5.0 started (bot: mercado)
2018-03-01 12:50:17 [scrapy.utils.log] INFO: Versions: lxml 4.1.1.0, libxml2 2.9.7, cssselect 1.0.3, parsel 1.4.0, w3lib 1.19.0, Twisted 17.9.0, Python 3.6.4 (default, Jan 5 2018, 02:13:53) - [GCC 7.2.0], pyOpenSSL 17.5.0 (OpenSSL 1.1.0g 2 Nov 2017), cryptography 2.1.4, Platform Linux-4.13.0-kali1-amd64-x86_64-with-Kali-kali-rolling-kali-rolling
2018-03-01 12:50:18 [scrapy.crawler] INFO: Overridden settings: {'BOT_NAME': 'mercado', 'DOWNLOAD_DELAY': 2, 'NEWSPIDER_MODULE': 'mercado.spiders', 'ROBOTSTXT_OBEY': True, 'SPIDER_MODULES': ['mercado.spiders']}
2018-03-01 12:50:18 [scrapy.middleware] INFO: Enabled extensions:
['scrapy.extensions.corestats.CoreStats',
'scrapy.extensions.telnet.TelnetConsole',
'scrapy.extensions.memusage.MemoryUsage',
'scrapy.extensions.logstats.LogStats']
2018-03-01 12:50:18 [scrapy.middleware] INFO: Enabled downloader middlewares:
['scrapy.downloadermiddlewares.robotstxt.RobotsTxtMiddleware',
'scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware',
'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware',
'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware',
'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware',
'scrapy.downloadermiddlewares.retry.RetryMiddleware',
'scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware',
'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware',
'scrapy.downloadermiddlewares.redirect.RedirectMiddleware',
'scrapy.downloadermiddlewares.cookies.CookiesMiddleware',
'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware',
'scrapy.downloadermiddlewares.stats.DownloaderStats']
2018-03-01 12:50:18 [scrapy.middleware] INFO: Enabled spider middlewares:
['scrapy.spidermiddlewares.httperror.HttpErrorMiddleware',
'scrapy.spidermiddlewares.offsite.OffsiteMiddleware',
'scrapy.spidermiddlewares.referer.RefererMiddleware',
'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware',
'scrapy.spidermiddlewares.depth.DepthMiddleware']
Unhandled error in Deferred:
2018-03-01 12:50:18 [twisted] CRITICAL: Unhandled error in Deferred:

2018-03-01 12:50:18 [twisted] CRITICAL:
Traceback (most recent call last):
File "/root/mercado/mercado/lib/python3.6/site-packages/twisted/internet/defer.py", line 1386, in _inlineCallbacks
result = g.send(result)
File "/root/mercado/mercado/lib/python3.6/site-packages/scrapy/crawler.py", line 80, in crawl
self.engine = self._create_engine()
File "/root/mercado/mercado/lib/python3.6/site-packages/scrapy/crawler.py", line 105, in _create_engine
return ExecutionEngine(self, lambda _: self.stop())
File "/root/mercado/mercado/lib/python3.6/site-packages/scrapy/core/engine.py", line 70, in init
self.scraper = Scraper(crawler)
File "/root/mercado/mercado/lib/python3.6/site-packages/scrapy/core/scraper.py", line 71, in init
self.itemproc = itemproc_cls.from_crawler(crawler)
File "/root/mercado/mercado/lib/python3.6/site-packages/scrapy/middleware.py", line 58, in from_crawler
return cls.from_settings(crawler.settings, crawler)
File "/root/mercado/mercado/lib/python3.6/site-packages/scrapy/middleware.py", line 34, in from_settings
mwcls = load_object(clspath)
File "/root/mercado/mercado/lib/python3.6/site-packages/scrapy/utils/misc.py", line 44, in load_object
mod = import_module(module)
File "/root/mercado/mercado/lib/python3.6/importlib/init.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "", line 994, in _gcd_import
File "", line 971, in _find_and_load
File "", line 955, in _find_and_load_unlocked
File "", line 665, in _load_unlocked
File "", line 678, in exec_module
File "", line 219, in _call_with_frames_removed
File "/root/mercado/mercado/mercado/pipelines.py", line 11, in
from scrapy.pipelines.images import ImagesPipeline
File "/root/mercado/mercado/lib/python3.6/site-packages/scrapy/pipelines/images.py", line 15, in
from PIL import Image
ModuleNotFoundError: No module named 'PIL'

Podrias decirme a que es debido, desde ya muy agradecido.

Un saludo

No entiendo

No entiendo que sucede intento correr el codigo y me saca error en la fila de uno de los archivos dice esto: ModuleNotFoundError: No module named 'mercado'

Problema al reconocer el comando 'crawl'

Buenas tardes

Estoy intentando scrapear un sitio distinto a mercadolibre.

He realizado los pasos a seguir igual que tu,pero extrapolando la información y adaptandola al sitio web que deseo scrapear.

La cuestión es que cuando le doy a ejecutar dice que scrapy no me reconoce el comando "crawl"

Estoy utilizando una instalación de python 3.6 dentro de Anaconda en su ultima version en windows 10.

Podrias ayudarme a solucionar este problema?Si necesitas que te envie los archivos de python de mi proyecto para revisar asi el posible error comunicamelo.

Muchas gracias por el Tutorial!!

Espero tu respuesta!

from scrapy.spider import CrawlSpider, Rule ImportError: No module named spider

(terrenalia) stiva@stiva-MS-7972 ~/Escritorio/virtualenvs/terrenalia/terrenalia $ scrapy crawl terrenalia -t csv Traceback (most recent call last): File "/home/stiva/Escritorio/virtualenvs/terrenalia/bin/scrapy", line 10, in <module> sys.exit(execute()) File "/home/stiva/Escritorio/virtualenvs/terrenalia/local/lib/python2.7/site-packages/scrapy/cmdline.py", line 149, in execute cmd.crawler_process = CrawlerProcess(settings) File "/home/stiva/Escritorio/virtualenvs/terrenalia/local/lib/python2.7/site-packages/scrapy/crawler.py", line 251, in __init__ super(CrawlerProcess, self).__init__(settings) File "/home/stiva/Escritorio/virtualenvs/terrenalia/local/lib/python2.7/site-packages/scrapy/crawler.py", line 137, in __init__ self.spider_loader = _get_spider_loader(settings) File "/home/stiva/Escritorio/virtualenvs/terrenalia/local/lib/python2.7/site-packages/scrapy/crawler.py", line 338, in _get_spider_loader return loader_cls.from_settings(settings.frozencopy()) File "/home/stiva/Escritorio/virtualenvs/terrenalia/local/lib/python2.7/site-packages/scrapy/spiderloader.py", line 61, in from_settings return cls(settings) File "/home/stiva/Escritorio/virtualenvs/terrenalia/local/lib/python2.7/site-packages/scrapy/spiderloader.py", line 25, in __init__ self._load_all_spiders() File "/home/stiva/Escritorio/virtualenvs/terrenalia/local/lib/python2.7/site-packages/scrapy/spiderloader.py", line 47, in _load_all_spiders for module in walk_modules(name): File "/home/stiva/Escritorio/virtualenvs/terrenalia/local/lib/python2.7/site-packages/scrapy/utils/misc.py", line 71, in walk_modules submod = import_module(fullpath) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) File "/home/stiva/Escritorio/virtualenvs/terrenalia/terrenalia/terrenalia/spiders/spider.py", line 6, in <module> from scrapy.spider import CrawlSpider, Rule ImportError: No module named spider

A partir del proyecto de mercado hice mi propio scrapper "terrenalia", pero me sale éste error y no se como resolverlo.

Consulta scrapy

Junto con saludar me presento, me llamo Alex Riquelme y estudio ingeniería industrial en Chile, quería agradecerte por tu video de youtube Scraping usando Python, debo obtener información como la que tu extraes en mercado libre en tu video de scraping y sigo uno a uno tus pasos e incluso nombro mis carpetas de la misma forma que tu usando un Macbook porque no quería tener ningún problema de compatibilidad ni nada por el estilo, pero igual tengo un problema, resulta que cuando quiero correr el programa usando la sintaxis Scrapy crawl mercado --t csv me surge el siguiente mensaje:

File "/Users/Alex/Desktop/prueba1/mercado/lib/python2.7/site-packages/scrapy/spiderloader.py", line 71, in load
raise KeyError("Spider not found: {}".format(spider_name))
KeyError: 'Spider not found: mercado'

y he revisado la sintaxis de cada una de las pestañas usando sublime text 3 y tengo todo exactamente igual, no se si tu podrías ayudarme en eso o si alguien que ha visto tu video ha tenido el mismo problema, espero que me puedas ayudar y agradezco tu tiempo.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.