2011-03-10 10 views
6

Aşağıdaki kodBir siteyi örmeye ve ayrıştırmaya çalışırken neden terapi benim için bir hata yapıyor?

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 

aşağıdaki hatayı Atar

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: 

ben "ayrıştırmak" için geri arama ve ben herhangi bir hata alamadım "ayrıştırmak" işlevi değiştirmek, başka bir şey değildir

kazınmış. parse method by accident'u geçersiz kılabileceğimi düşünerek "parse_items" olarak değiştirdim. Belki de bağlantı çıkarıcısını yanlış ayarlıyorum?

Yapmak istediğim, CATEGORY sayfasındaki her bir ITEM bağlantısını ayrıştırmaktır. Bunu tamamen yanlış mı yapıyorum?

+0

Ayrıca bkz: http://stackoverflow.com/questions/1811132/scrapy-sgmllinkextractor-is-ignoring-allowed-links – bdd

cevap

4

varsayılan scrapy aramalar ile: BaseSpider, görmem Kural uygulayamaz görünüyor. Burada örümcekinizde ayrıştırma işlevi eksik. Ayrıştırmak yerine parse_item verdin. Parse_item parse ile değiştirilirse sorun çözülecektir. Veya spider.py'deki ayrıştırma yöntemini parse_item ile geçersiz kılabilirsiniz.

İlgili konular