2012-10-08 17 views
8

Podążam za dokumentacją samouczków Scrapy pod numerem http://media.readthedocs.org/pdf/scrapy/0.14/scrapy.pdf i potwierdziłem, że items.py i dmoz_spider.py zostały wpisane (niepoprawnie wklejone &).Wyjątki samouczek Scrapy

Pierwszy „hmmm ...” część była dla mnie ta instrukcja:

Jest to kod dla naszego pierwszego Pająk; zapisać go w pliku o nazwie dmoz_spider.py w katalogu Dmoz/pająki

Używam najnowszej wersji Ubuntu i nie było folder dmoz stworzony, więc mam umieścić ten kod w ~/samouczek/samouczek/pająki. (Był to mój pierwszy błąd?)

Więc oto moja dmoz_spider.py scenariusz:

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) 

W moim terminalu wpisuję

scrapy crawl dmoz 

i uzyskać w ten sposób:

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) 

W moich poszukiwaniach, zobaczyłem, że ktoś inny powiedział, że pokrętło prawdopodobnie nie zostało zainstalowane ... ale nie byłoby zainstalowane, gdybym użył Instalacja pakietu Ubuntu dla Scrapy?

Z góry dziękuję!

+0

¿Dlaczego nie sprawdzić najpierw, czy jest rzeczywiście zainstalowany? Nie ufaj, że zgadniesz :) – Alfabravo

Odpowiedz

15

Metoda analizy składni w BaseSpider jest wywoływana zamiast twojej, ponieważ nie przetworzyłeś poprawnie metody analizy. Twoje wcięcie jest błędne, więc parsowanie jest deklarowane jako funkcja poza klasą DmozSpider. Witajcie w Pythonie :)

Nie ma to nic wspólnego ze skręceniem, widzę, że skręcony jest w śladach, więc jest wyraźnie zainstalowany.

+1

Ach, udało się. Dzięki! Po wcięciu linii "def pars" wszystko działało dobrze! Witamy w Pythonie. :) – user1729889

+0

Dziękuję Shane z 2015 ~ –