2012-10-08 18 views
8

Tôi đang theo dõi tài liệu hướng dẫn sơ lược tại http://media.readthedocs.org/pdf/scrapy/0.14/scrapy.pdf và tôi đã xác minh rằng items.py và dmoz_spider.py được nhập (không cắt & dán) một cách chính xác.Ngoại lệ hướng dẫn cóp nhặt

Việc đầu tiên "hmmm ..." một phần đối với tôi là hướng dẫn này:

Đây là mã cho Spider đầu tiên của chúng tôi; lưu nó trong một file có tên dmoz_spider.py dưới thư mục DMOZ/nhện

Tôi đang sử dụng phiên bản mới nhất của Ubuntu và đã không có một thư mục DMOZ tạo ra, vì vậy tôi đã đặt mã này vào ~/hướng dẫn/hướng dẫn/nhện. (Đây có phải lỗi đầu tiên của tôi?)

Vì vậy, đây là kịch bản dmoz_spider.py tôi:

from scrapy.spider import BaseSpider 

class DmozSpider(BaseSpider): 
    name = "dmoz" 
    allowed_domains = ["dmoz.org"] 
    start_urls = [ 
    "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/", 
    "http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/" 
    ] 

def parse(self, response): 
    filename = response.url.split("/")[-2] 
    open(filename, 'wb').write(response.body) 

Trong terminal của tôi, tôi gõ

scrapy crawl dmoz 

Và tôi có được điều này:

2012-10-08 13:20:22-0700 [scrapy] INFO: Scrapy 0.12.0.2546 started (bot: tutorial) 
2012-10-08 13:20:22-0700 [scrapy] DEBUG: Enabled extensions: TelnetConsole, SpiderContext, WebService, CoreStats, MemoryUsage, CloseSpider 
2012-10-08 13:20:22-0700 [scrapy] DEBUG: Enabled scheduler middlewares: DuplicatesFilterMiddleware 
2012-10-08 13:20:22-0700 [scrapy] DEBUG: Enabled downloader middlewares: HttpAuthMiddleware, DownloadTimeoutMiddleware, UserAgentMiddleware, RetryMiddleware, DefaultHeadersMiddleware, RedirectMiddleware, CookiesMiddleware, HttpCompressionMiddleware, DownloaderStats 
2012-10-08 13:20:22-0700 [scrapy] DEBUG: Enabled spider middlewares: HttpErrorMiddleware, OffsiteMiddleware, RefererMiddleware, UrlLengthMiddleware, DepthMiddleware 
2012-10-08 13:20:22-0700 [scrapy] DEBUG: Enabled item pipelines: 
2012-10-08 13:20:22-0700 [scrapy] DEBUG: Telnet console listening on 0.0.0.0:6023 
2012-10-08 13:20:22-0700 [scrapy] DEBUG: Web service listening on 0.0.0.0:6080 
2012-10-08 13:20:22-0700 [dmoz] INFO: Spider opened 
2012-10-08 13:20:22-0700 [dmoz] DEBUG: Crawled (200) <GET http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/> (referer: None) 
2012-10-08 13:20:22-0700 [dmoz] ERROR: Spider error processing <http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/> (referer: <None>) 
Traceback (most recent call last): 
    File "/usr/lib/python2.7/dist-packages/twisted/internet/base.py", line 1178, in mainLoop 
    self.runUntilCurrent() 
    File "/usr/lib/python2.7/dist-packages/twisted/internet/base.py", line 800, in runUntilCurrent 
    call.func(*call.args, **call.kw) 
    File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 362, in callback 
    self._startRunCallbacks(result) 
    File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 458, in _startRunCallbacks 
    self._runCallbacks() 
--- <exception caught here> --- 
    File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 545, in _runCallbacks 
    current.result = callback(current.result, *args, **kw) 
    File "/usr/lib/python2.7/dist-packages/scrapy/spider.py", line 62, in parse 
    raise NotImplementedError 
exceptions.NotImplementedError: 

2012-10-08 13:20:22-0700 [dmoz] DEBUG: Crawled (200) <GET http://www.dmoz.org/Computers/Programming/Languages/Python/Books/> (referer: None) 
2012-10-08 13:20:22-0700 [dmoz] ERROR: Spider error processing <http://www.dmoz.org/Computers/Programming/Languages/Python/Books/> (referer: <None>) 
Traceback (most recent call last): 
    File "/usr/lib/python2.7/dist-packages/twisted/internet/base.py", line 1178, in mainLoop 
    self.runUntilCurrent() 
    File "/usr/lib/python2.7/dist-packages/twisted/internet/base.py", line 800, in runUntilCurrent 
    call.func(*call.args, **call.kw) 
    File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 362, in callback 
    self._startRunCallbacks(result) 
    File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 458, in _startRunCallbacks 
    self._runCallbacks() 
--- <exception caught here> --- 
    File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 545, in _runCallbacks 
    current.result = callback(current.result, *args, **kw) 
    File "/usr/lib/python2.7/dist-packages/scrapy/spider.py", line 62, in parse 
    raise NotImplementedError 
exceptions.NotImplementedError: 

2012-10-08 13:20:22-0700 [dmoz] INFO: Closing spider (finished) 
2012-10-08 13:20:22-0700 [dmoz] INFO: Spider closed (finished) 

Trong tìm kiếm của tôi, tôi thấy rằng một người nào khác đã nói xoắn có thể không được cài đặt ... nhưng nó sẽ không được cài đặt nếu tôi sử dụng Trình cài đặt gói Ubuntu cho Scrapy?

Cảm ơn trước!

+0

¿Tại sao không kiểm tra trước nếu nó thực sự được cài đặt? Đừng tin tưởng dự đoán của bạn :) – Alfabravo

Trả lời

15

Phương thức phân tích cú pháp trong BaseSpider được gọi thay vì của bạn bởi vì bạn đã không ghi đè chính xác phương thức phân tích cú pháp. Thụt lề của bạn là sai, do đó, phân tích cú pháp được khai báo là một hàm bên ngoài lớp DmozSpider. Chào mừng bạn đến python :)

Không có gì để làm với xoắn, tôi có thể thấy rằng xoắn là trong tracebacks, vì vậy nó được cài đặt rõ ràng.

+1

Ah, điều đó đã xảy ra. Cảm ơn! Sau khi thụt dòng "phân tích cú pháp", mọi thứ đều hoạt động tốt! Chào mừng bạn đến với Python. :) – user1729889

+0

Cảm ơn bạn Shane từ năm 2015 ~ –

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