Scrapy: no hay página de lista, pero conozco la URL de cada página de elemento

Estoy usando Scrapy para raspar un sitio web. La página del artículo que quiero raspar se ve así: http://www.somepage.com/itempage/&page=x. Donde x es cualquier número de 1 a 100. Por lo tanto, tengo un SgmlLinkExractor Regla con una función de devolución de llamada especificada para cualquier página que se parezca a esta.

El sitio web no tiene una página de lista con todos los elementos, por lo que de alguna manera quiero raspar esas URL (de 1 a 100). Este chico aquí parecía tener el mismo problema, pero no podía resolverlo.

¿Alguien tiene una solución?

preguntado el 16 de mayo de 11 a las 19:05

2 Respuestas

Puede enumerar todas las URL conocidas en su Spider clase' start_urls atributo:

class SomepageSpider(BaseSpider):
    name = 'somepage.com'
    allowed_domains = ['somepage.com']
    start_urls = ['http://www.somepage.com/itempage/&page=%s' % page for page in xrange(1, 101)]

    def parse(self, response):
        # ...

contestado el 27 de mayo de 11 a las 16:05

Si es solo una cosa, puede crear un archivo html local file:///c:/somefile.html con todos los enlaces. Comience a raspar ese archivo y agregue somepage.com a dominios permitidos.

Alternativamente, en la función de análisis, puede devolver una nueva Solicitud que es la siguiente URL que se raspa.

contestado el 27 de mayo de 11 a las 16:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.