2011-03-10 13 views
6

El código¿Por qué scrapy arroja un error al intentar arañar y analizar un sitio?

class SiteSpider(BaseSpider): 
    name = "some_site.com" 
    allowed_domains = ["some_site.com"] 
    start_urls = [ 
     "some_site.com/something/another/PRODUCT-CATEGORY1_10652_-1__85667", 
    ] 
    rules = (
     Rule(SgmlLinkExtractor(allow=('some_site.com/something/another/PRODUCT-CATEGORY_(.*)',))), 

     # Extract links matching 'item.php' and parse them with the spider's method parse_item 
     Rule(SgmlLinkExtractor(allow=('some_site.com/something/another/PRODUCT-DETAIL(.*)',)), callback="parse_item"), 
    ) 
    def parse_item(self, response): 
.... parse stuff 

siguiente tira el siguiente error

Traceback (most recent call last): 
    File "/usr/lib/python2.6/dist-packages/twisted/internet/base.py", line 1174, in mainLoop 
    self.runUntilCurrent() 
    File "/usr/lib/python2.6/dist-packages/twisted/internet/base.py", line 796, in runUntilCurrent 
    call.func(*call.args, **call.kw) 
    File "/usr/lib/python2.6/dist-packages/twisted/internet/defer.py", line 318, in callback 
    self._startRunCallbacks(result) 
    File "/usr/lib/python2.6/dist-packages/twisted/internet/defer.py", line 424, in _startRunCallbacks 
    self._runCallbacks() 
--- <exception caught here> --- 
    File "/usr/lib/python2.6/dist-packages/twisted/internet/defer.py", line 441, in _runCallbacks 
    self.result = callback(self.result, *args, **kw) 
    File "/usr/lib/pymodules/python2.6/scrapy/spider.py", line 62, in parse 
    raise NotImplementedError 
exceptions.NotImplementedError: 

Cuando cambio la devolución de llamada a "analizar" y la función de "analizar" no consigo ningún error, pero nada es raspado. Lo cambié a "parse_items" pensando que podría estar anulando el parse method by accident. Tal vez estoy configurando el extractor de enlaces mal?

Lo que quiero hacer es analizar cada enlace de ELEMENTO en la página CATEGORÍA. ¿Estoy haciendo esto totalmente mal?

+0

también: vea http://stackoverflow.com/questions/1811132/scrapy-sgmllinkextractor-is-ignoring-allowed-links – bdd

Respuesta

4

Por Scrapy búsquedas por defecto para la función de análisis de la clase. Aquí en tu araña, falta la función de análisis. En lugar de analizar, has dado parse_item. El problema se resolverá si parse_item se reemplaza con el análisis. O puede anular el método de análisis en spider.py con el de parse_item.

Cuestiones relacionadas