Trong khi thu thập dữ liệu, một số trang không thành công do chuyển hướng không mong muốn và không có phản hồi nào được trả lại. Làm thế nào tôi có thể nắm bắt loại lỗi này và lên lịch lại yêu cầu với url gốc, không phải với url được chuyển hướng?Phế liệu: cách bắt lỗi tải xuống và thử tải xuống lại lần nữa
Trước khi tôi hỏi tại đây, tôi thực hiện rất nhiều tìm kiếm với Google. Có hai cách để khắc phục sự cố này. một là bắt ngoại lệ trong một phần mềm trung gian tải về, người kia là để xử lý ngoại lệ tải về trong errback trong yêu cầu của nhện. Đối với hai câu hỏi này, tôi có một số câu hỏi.
- Đối với phương pháp 1, tôi không biết cách chuyển url gốc sang hàm process_exception. Dưới đây là mã ví dụ mà tôi đã thử.
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
Đối với phương pháp 2, tôi không biết làm thế nào để vượt qua thông số bên ngoài để errback chức năng trong nhện. Tôi không biết cách truy xuất url gốc từ hàm errback này để sắp xếp lại yêu cầu.
Dưới đây là ví dụ tôi đã cố gắng với phương pháp 2:
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"
Bất kỳ gợi ý cho vấn đề thu thập lại thông này được đánh giá cao. Cảm ơn trước.
Trân
Bing
@ dabling1205, cho chúng ta thấy những gì bạn đã cố gắng –
Các bài trông một lứa lộn xộn, tôi mới đến đây và không quen thuộc với các định dạng chỉnh sửa, :) – dabing1205