2011-03-10 14 views
6

निम्नलिखित कोडमकड़ी की कोशिश करते समय और साइट को पार्स करने के दौरान स्केपर मेरे लिए त्रुटि क्यों फेंकता है?

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 

निम्न त्रुटि फेंकता

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: 

जब मैं कॉलबैक "पार्स" करने के लिए और समारोह "पार्स करने के लिए" मैं किसी भी त्रुटि नहीं मिलता है बदलने के लिए, लेकिन कुछ भी नहीं है स्क्रैप। मैंने इसे "parse_items" में बदल दिया है, सोच रहा हूं कि मैं parse method by accident को ओवरराइड कर सकता हूं। शायद मैं लिंक निकालने वाला गलत स्थापित कर रहा हूं?

मैं क्या करना चाहता हूं वह प्रत्येक पृष्ठ लिंक को CATEGORY पृष्ठ पर पार्स करना है। क्या मैं यह पूरी तरह से गलत कर रहा हूँ?

+0

भी: http://stackoverflow.com/questions/1811132/scrapy-sgmllinkextractor-is-ignoring-allowed-links – bdd

उत्तर

9

मुझे बेसस्पीडर को क्रॉलस्पीडर में बदलने की आवश्यकता है। धन्यवाद साइप्रस उपयोगकर्ता!

http://groups.google.com/group/scrapy-users/browse_thread/thread/4adaba51f7bcd0af#

हाय बॉब,

शायद यह अगर तुम CrawlSpider को BaseSpider से बदल काम कर सकते हैं? कक्षा में पार्स समारोह के लिए

http://doc.scrapy.org/topics/spiders.html?highlight=rule#scrapy.contr ...

-M

+0

यह python3 में उपलब्ध नए संस्करण के साथ काम नहीं करता है :( – comiventor

4

करके डिफ़ॉल्ट scrapy खोज: BaseSpider नियम को लागू नहीं लगता है, देखें। यहां आपके मकड़ी में, पार्स फ़ंक्शन गुम है। पार्स के बजाय आपने parse_item दिया है। अगर parse_item पार्स के साथ प्रतिस्थापित होता है तो समस्या हल हो जाएगी। या आप parse_item के साथ spider.py में पार्स विधि को ओवरराइड कर सकते हैं।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^