Pregunta

Quiero construir un rastreador web basado en Scrapy de noticias grab imágenes desde varias noticias portal web. Quiero este rastreador ser:

  1. Ejecutar para siempre

    significa que será periódica re-visitar algunas páginas del portal para obtener actualizaciones.

  2. Prioridades de Programación.

    Dar diferentes prioridades a diferentes tipos de direcciones URL.

  3. Multi hilo traiga

He leído el documento Scrapy pero no he encontrado algo relacionado con lo que hice una lista (tal vez no soy lo suficientemente cuidadoso). ¿Hay alguien aquí sabe cómo hacer eso? o simplemente dar una idea / ejemplo de ello. Gracias!

¿Fue útil?

Solución

Scrapy es un marco para el rastreo de sitios web, como tal, se pretende apoyar a sus criterios, pero no va a bailar para usted fuera de la caja; usted probablemente tendrá que conseguir relativamente familiarizados con el módulo para algunas tareas.

  1. Correr siempre depende de su aplicación que llama Scrapy. Usted le dice las arañas dónde ir y cuándo ir allí.
  2. Dar prioridad es el trabajo de Programador de middleware la que habría que crear y enchufe en Scrapy. La documentación sobre este aparece irregular y no ha mirado el código -., En principio, la función está allí
  3. Scrapy es inherentemente, fundamentalmente asíncrono que bien puede lo que está deseando: B petición puede ser satisfecha si bien la solicitud A todavía está pendiente. El motor de conexión subyacente no le impide de buena fe multi-threading, pero Scrapy no proporciona servicios de roscar.

Scrapy es una biblioteca, no una aplicación. Hay una cantidad no trivial de trabajo (código) que un usuario de las necesidades del módulo de hacer.

Otros consejos

Sobre el requisito de rodaje para siempre, aquí está algunos detalles.

Es necesario captar la señal de signals.spider_idle, y en su método que conectado a la señal, es necesario plantear una excepción DontCloseSpider. La señal spider_idle se envía al motor scrapy cuando no hay solicitudes pendientes, y por defecto la voluntad de apagado araña. Puede interceptar este proceso.

ver los códigos soplan:

import scrapy
from scrapy.exceptions import DontCloseSpider
from scrapy.xlib.pydispatch import dispatcher

class FooSpider(scrapy.Spider):
    def __init__(self, *args, **kwargs):
        super(FooSpider, self).__init__(*args, **kwargs)
        dispatcher.connect(self.spider_idle, signals.spider_idle)

    def spider_idle(self):
        #you can revisit your portal urls in this method
        raise DontCloseSpider 
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top