2011-12-17 4 views
6

Tengo una pregunta de dos partes.Siendo un buen ciudadano y raspando la red

En primer lugar, estoy escribiendo un raspador web basado en el CrawlSpider araña en Scrapy. Estoy tratando de robar un sitio web que tiene muchos miles (posibles en los cientos de miles) de registros. Estos registros están enterrados 2-3 capas hacia abajo desde la página de inicio. Así que, básicamente, tengo el inicio araña en una página determinada, rastreo hasta que encuentre un tipo específico de registro, y luego analizar el html. Lo que me pregunto es qué métodos existen para evitar que mi araña sobrecargue el sitio. ¿Hay posiblemente una manera de hacer las cosas de forma incremental o poner una pausa entre las diferentes solicitudes?

En segundo lugar, y relacionado, ¿hay algún método con Scrapy para probar un rastreador sin poner demasiado estrés en un sitio? Sé que puedes matar el programa mientras se ejecuta, pero ¿hay alguna manera de detener el script después de tocar algo como la primera página que tiene la información que quiero borrar?

Cualquier consejo o recurso sería muy apreciado.

Respuesta

6

¿Hay posiblemente una manera de hacer algo de forma incremental

Estoy usando la capacidad de almacenamiento en caché Scrapy para raspar sitio incrementaly

HTTPCACHE_ENABLED = True

O puede utilizar la nueva característica 0,14 Jobs: pausing and resuming crawls

o ponga una pausa en entre diferentes solicitudes?

marca esta configuración:

DOWNLOAD_DELAY  
RANDOMIZE_DOWNLOAD_DELAY 

¿Existe un método con Scrapy para probar una oruga sin poner tensión excesiva en un sitio?

Puede probar y depurar el código en Scrapy shell

Sé que puede matar el programa mientras se ejecuta, pero hay una manera de hacer la parada de la escritura después de golpear algo así como la primera página que tiene la información que quiero raspar?

Además, puede llamar al scrapy.shell.inspect_response en cualquier momento en su araña.

Cualquier consejo o recurso sería muy apreciado.

La documentación de Scrapy es el mejor recurso.

+0

Impresionante. Muchas gracias. – user1074057

-2

Tienes que empezar a rastrear y registrar todo. En caso de que se le prohíba, puede agregar sleep() antes de que las páginas lo soliciten.

Cambio de User-Agent es una buena práctica, también (http://www.user-agents.org/ http://www.useragentstring.com/)

Si baneado por IP, el uso de proxy para prescindir de ella. Aclamaciones.

+1

Esa es una respuesta interesante a una pregunta sobre "ser un buen ciudadano y raspar la red" :) – damd

Cuestiones relacionadas