読者です 読者をやめる 読者になる 読者になる

或阿呆のブログ

Pythonを好んで使っているプログラマです。Ruby,Perl,PowerShell,VBAなどでもたまに書いています。おバカなことが大好きです。

LinuxMint17(Ubuntu派生)でScrapy Shellを使おうとしたらエラー出たぞ。

Python

IPythonに病みつきになったんで、どうせならスクレーピングもインタラクティブシェルでやろうと思って、

scrapy shell url

って叩いたら、最初は上手くいってそうだったけど、後からこんなエラーが

ImportError: Error loading object 'scrapy.telnet.TelnetConsole': No module named conch

conchってなんだよ?ってことで、conchをインストールしようとしたけど、そんなもん見つからねぇぞと。ってことで、ぐぐってみたところ、stackoverflowで解決策を見つけた。

2 down vote

On Ubuntu, you should avoid using easy_install wherever you can. Instead, you should be using apt-get, aptitude, "Ubuntu Software Center", or another of the distribution-provided tools.
For example, this single command is all you need to install scrapy - along with every one of its dependencies that is not already installed:

$ sudo apt-get install python-scrapy
python - Error while using Scrapy : ['scrapy.telnet.TelnetConsole': No module named conch twisted] - Stack Overflow

早い話が、Scrapyインストールするときはeasy_install使わないでapt-get使えって書いてある。pythonと言えば、pipやeasy_installなんだけど、Ubuntuではそれは避けろということらしい。実際に俺も、pipもeasy_installも試したけどどちらも同じエラーが出た。パッケージの依存関係とか解決出来なかったのだろうかね?

んで、apt-getでインストールしなおしたら、上手く行った。

$scrapy shell 'http://ameblo.jp/one-shotlife/'
2014-08-07 23:26:31+0900 [scrapy] INFO: Scrapy 0.24.2 started (bot: scrapybot)
2014-08-07 23:26:31+0900 [scrapy] INFO: Optional features available: ssl, http11, boto
2014-08-07 23:26:31+0900 [scrapy] INFO: Overridden settings: {'LOGSTATS_INTERVAL': 0}
2014-08-07 23:26:31+0900 [scrapy] INFO: Enabled extensions: TelnetConsole, CloseSpider, WebService, CoreStats, SpiderState
2014-08-07 23:26:32+0900 [scrapy] INFO: Enabled downloader middlewares: HttpAuthMiddleware, DownloadTimeoutMiddleware, UserAgentMiddleware, RetryMiddleware, DefaultHeadersMiddleware, MetaRefreshMiddleware, HttpCompressionMiddleware, RedirectMiddleware, CookiesMiddleware, ChunkedTransferMiddleware, DownloaderStats
2014-08-07 23:26:32+0900 [scrapy] INFO: Enabled spider middlewares: HttpErrorMiddleware, OffsiteMiddleware, RefererMiddleware, UrlLengthMiddleware, DepthMiddleware
2014-08-07 23:26:32+0900 [scrapy] INFO: Enabled item pipelines: 
2014-08-07 23:26:32+0900 [scrapy] DEBUG: Telnet console listening on 127.0.0.1:6023
2014-08-07 23:26:32+0900 [scrapy] DEBUG: Web service listening on 127.0.0.1:6080
2014-08-07 23:26:33+0900 [default] INFO: Spider opened
2014-08-07 23:26:33+0900 [default] DEBUG: Crawled (200) <GET http://ameblo.jp/one-shotlife/> (referer: None)
[s] Available Scrapy objects:
[s]   crawler    <scrapy.crawler.Crawler object at 0xb63f798c>
[s]   item       {}
[s]   request    <GET http://ameblo.jp/one-shotlife/>
[s]   response   <200 http://ameblo.jp/one-shotlife/>
[s]   settings   <scrapy.settings.Settings object at 0xb6641aac>
[s]   spider     <Spider 'default' at 0xb5ffb06c>
[s] Useful shortcuts:
[s]   shelp()           Shell help (print this help)
[s]   fetch(req_or_url) Fetch request (or URL) and update local objects
[s]   view(response)    View response in a browser

In [1]: 

stackoverflow様様だね。少なくとも日本語のサイトでは、これの解決策を書いているところは無かった、あるいは上位表示されていなかった。