0
0

More than 3 years have passed since last update.

Scrapy Shellの自動補完のトラブル解決方法

Last updated at Posted at 2021-02-03

Scrapy Shellの自動補完(オートコンプリート)でよく発生するトラブルとその解決方法です。

そもそも自動補完が使えない

IPythonをインストールしましょう。

$ pip install ipython

Scrapy ShellはIPythonがインストールされていれば標準Pythonコンソールの代わりにそちらを使います。

補完しようとするとログが出力されて邪魔だ

Scrapy Shell起動時にログレベルを変更しましょう。

$ scrapy shell -s LOG_LEVEL='INFO' <URL>

デフォルトのログレベルがDEBUGになっています。
そのままだと初めて補完するときや補完しようとして候補がないときなどに以下なログが出力されてしまいます。

# res(ponse)を補完する
In [1]: res2021-02-03 23:29:19 [parso.cache] DEBUG: pickle loaded: /PATH/venv/lib/python3.8/site-packages/jedi/third_party/typeshed/stdlib/2and3/builtins.pyi
2021-02-03 23:29:19 [parso.cache] DEBUG: pickle loaded:/PATH/venv/lib/python3.8/site-packages/jedi/third_party/typeshed/stdlib/3/sys.pyi
In [1]: response
Out[1]: <200 https://www.google.com/>

# hogeを補完する
In [2]: hoge2021-02-03 23:29:34 [parso.python.diff] DEBUG: diff parser start
2021-02-03 23:29:34 [parso.python.diff] DEBUG: line_lengths old: 1; new: 1
2021-02-03 23:29:34 [parso.python.diff] DEBUG: -> code[replace] old[1:1] new[1:1]
2021-02-03 23:29:34 [parso.python.diff] DEBUG: parse_part from 1 to 1 (to 0 in part parser)
2021-02-03 23:29:34 [parso.python.diff] DEBUG: diff parser end

表示内容をもっと減らしたければ以下のようにしてもよいです。

# ログレベルを更に上げる
$ scrapy shell -s LOG_LEVEL='WARNING' <URL>
$ scrapy shell -s LOG_LEVEL='ERROR' <URL>
$ scrapy shell -s LOG_LEVEL='CRITICAL' <URL>

# ログを無効にする
$ scrapy shell -s LOG_ENABLED=False <URL>

Scrapy Shellを起動するときにいちいちログレベルを指定するのが面倒だ

Scrapyプロジェクトのsettings.pyでログレベルを設定しましょう。
settings.pyの場所はプロジェクトルートのscrapy.cfgに書かれています。

scrapy.cfg
[settings]
default = your_project_name.settings

settings.pyに以下のように設定を記述します。

settings.py
LOG_LEVEL = 'INFO'

現在のディレクトリでScrapy Shellを実行したときに適用されるログレベルは、以下のコマンドで確認できます。

$ scrapy settings --get LOG_LEVEL
INFO
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0