मेरी क्रॉलिंग के दौरान, कुछ पृष्ठ अप्रत्याशित पुनर्निर्देशन के कारण विफल रहे और कोई प्रतिक्रिया वापस नहीं आई। मैं इस तरह की त्रुटि को कैसे पकड़ सकता हूं और रीडायरेक्ट यूआरएल के साथ मूल यूआरएल के साथ अनुरोध को फिर से शेड्यूल कर सकता हूं?स्केपर: डाउनलोड त्रुटि को कैसे पकड़ें और इसे फिर से डाउनलोड करने का प्रयास करें
इससे पहले कि मैं यहां पूछूं, मैं Google के साथ बहुत सी खोज करता हूं। ऐसा लगता है कि इस समस्या को ठीक करने के दो तरीके हैं। एक डाउनलोड मध्य-बर्तन में एक अपवाद है, दूसरा स्पाइडर के अनुरोध में गलती में डाउनलोड अपवाद को संसाधित करना है। इन दो सवालों के लिए, मेरे कुछ प्रश्न हैं।
- विधि 1 के लिए, मुझे नहीं पता कि प्रक्रिया_exception फ़ंक्शन के मूल यूआरएल को कैसे पास किया जाए। नीचे उदाहरण कोड मैंने कोशिश की है।
class ProxyMiddleware(object): def process_request(self, request, spider): request.meta['proxy'] = "http://192.168.10.10" log.msg('>>>> Proxy %s'%(request.meta['proxy'] if request.meta['proxy'] else ""), level=log.DEBUG) def process_exception(self, request, exception, spider): log_msg('Failed to request url %s with proxy %s with exception %s' % (request.url, proxy if proxy else 'nil', str(exception))) #retry again. return request
विधि 2 के लिए, मैं कैसे मकड़ी में समारोह errback के लिए बाहरी पैरामीटर पारित करने के लिए पता नहीं है। मुझे नहीं पता कि इस त्रुटि फ़ंक्शन से मूल URL को पुनर्प्राप्त करने के लिए अनुरोध को फिर से शेड्यूल करें।
class ProxytestSpider(Spider): name = "proxytest" allowed_domains = ["baidu.com"] start_urls = ( 'http://www.baidu.com/', ) def make_requests_from_url(self, url): starturl = url request = Request(url, dont_filter=True,callback = self.parse, errback = self.download_errback) print "make requests" return request def parse(self, response): pass print "in parse function" def download_errback(self, e): print type(e), repr(e) print repr(e.value) print "in downloaderror_callback"
इस रीक्रॉल जारी करने के लिए कोई भी सुझाव अत्यधिक सराहना की है:
नीचे उदाहरण मैं विधि 2 के साथ करने की कोशिश की है। अग्रिम में धन्यवाद।
सादर
बिंग
@ dabling1205, हमें दिखा तुम क्या कोशिश की है –
पोस्ट एक कूड़े गंदा लग रहा है, मैं संपादित प्रारूप से परिचित यहाँ और नहीं करने के लिए नया हूँ, :) – dabing1205