2012-07-06 31 views
8

Tôi đang cố gắng thiết lập lớp trung gian của trình tải xuống tùy chỉnh trong Scrapy. Tôi nghi ngờ rằng tôi đã bỏ lỡ một cái gì đó hiển nhiên, nhưng tôi đã đọc qua các tài liệu một vài lần và đã tìm thấy không có giải pháp. Tôi nhận được một chút thất vọng với những gì nên là một nhiệm vụ cực kỳ đơn giản, vì vậy hy vọng ai đó sẽ có thể cung cấp cho tôi một số cái nhìn sâu sắc.Không thể xác định phần mềm trung gian tải xuống tùy chỉnh trong Scrapy

Tôi đã thêm dòng sau vào tệp settings.py của mình.

DOWNLOADER_MIDDLEWARES = { 'myproject.middlewares.TestDownloader': 400 } 

Sau khi thêm dòng đó và chạy dự án, tôi gặp lỗi về phần mềm mô-đun không tồn tại. Sau một số nghiên cứu, tôi phát hiện ra rằng bạn cần thêm một tệp __init__.py vào thư mục middlewares để Python nhận ra nó. Tôi đã thực hiện việc này và hiện đang nhận được lỗi sau:

NameError: Module 'myproject.middlewares' doesn't define any object named 'TestDownloader' 

Tệp TestDownloader.py không được biên dịch, trong khi tất cả các tệp * .py khác trong dự án là. Nếu tôi hiểu Python của tôi đọc chính xác, điều đó có nghĩa là nó không được nhập bất cứ nơi nào, nhưng tôi không thể tìm thấy bất kỳ cài đặt Scrapy bổ sung nào để thay đổi để thực hiện công việc này.

Trả lời

17
DOWNLOADER_MIDDLEWARES = { 'myproject.middlewares.TestDownloader': 400 } 

Đối với điều này để làm việc, tạo file middlewares.py bên myproject thư mục, và trong tập tin đó đặt lớp downloader middleware của bạn được gọi TestDownloader.

Hoặc có middlewares thư mục với __init__.py bên trong nó, bạn có thể đặt đặt lớp middleware downloader của bạn được gọi TestDownloader bên __init__.py - điều này nên làm việc quá.

+1

Đúng, một giải pháp cực kỳ đơn giản mà tôi chưa từng nghĩ đến. Cảm ơn bạn. – Jared

Các vấn đề liên quan