Python3.7でScrapyが動かないことから始まるアレコレ
Python3.7でScrapyが動かない
今更ながらPython3.7が先日リリースされました。リリースされた際の資料は以下になります。 (https://www.python.org/downloads/release/python-370/)
外部モジュール系のアップデート対応はに関してTwitterとかの情報で「〇〇が動かない!」的な話がなかったので大丈夫だろうと思ってましたが、どうやらPython3.7+Scrapyについては依存している外部モジュールに不具合があるようでチュートリアルを動かしてみると以下のようなSyntaxErrorとなってしまうそうです。
/Users/ComputerName/Virtualenvs/scrapy_env/lib/python3.7/site-packages/twisted/conch/manhole.py", line 154 def write(self, data, async=False): ^ SyntaxError: invalid syntax
- 該当のstackoverflowの記事(https://stackoverflow.com/questions/48861287/why-am-i-getting-this-error-in-scrapy-python3-7-invalid-syntax)
- ScrapyのGitHubのissue(https://github.com/scrapy/scrapy/issues/3143#issuecomment-368559739)
Python3.6に戻したい
自分の環境はOSXのHighSierraで基本的に環境構築はHomebrew+Python標準のvenvを用いてプロジェクトごとに仮想環境を作成して管理しておりました。自分は標準モジュールのvenvでもかつてのpyenvと同様にPythonの任意のバージョンを入れることができると勘違いしていましたができないようでした。
そこで、Homebrewで下位のバージョンがインストールできないのかなと思って調べたところ下記のコマンドでインストールできました。
brew switch python [欲しいバージョン] python3 --version # 3.6.6になりました
これで改めてチュートリアル通りコードを記述して以下のコマンドを実行します。
scrapy crawl quotes
そうすると今度はきちんとコマンドが終了して、スクレイピングが終了しました。
やったね!
以上、皆さんも楽しいスクレイピングライフを!