Scrapyシェルは、クローラを起動せずにコードの一部を試したりデバッグしたりするためのインタラクティブなターミナルです。XPathやCSS式のテストにも役立ち、クローラ実行の手間を省きます。
Scrapyシェルは通常、標準Pythonターミナルを使用しますが、IPythonがインストールされている場合、優先的に使用されます。IPythonは自動補完やハイライト出力などの強化機能を提供します。
1. Scrapyシェルの起動方法
以下のコマンドでScrapyシェルを起動できます。
scrapy shell <URL>
このコマンドでは、<URL>に取得したいページのアドレスを指定します。
例として、Windowsのコマンドプロンプトで以下のように入力します:
C:\Users\user>scrapy shell www.example.com
これにより、Scrapyシェルが起動し、ログが出力されます。例えば、「Crawled (200)」というメッセージは、ページへのアクセスが成功したことを示します。
2. Scrapyシェルの使い方
Scrapyシェルは拡張されたPythonコンソールで、特にWebスクレイピング向けの関数とオブジェクトが追加されています。(1) 機能関数
主な関数には以下の3つがあります:- ヘルプリスト表示:
shelp()- 使用可能なオブジェクトと関数の一覧を表示。 - 新しいレスポンス取得:
fetch(req_or_url)- 指定したリクエストまたはURLから新しいレスポンスを取得。 - ブラウザで表示:
view(resp)- ローカルブラウザでレスポンスを表示。外部リンク(画像やCSS)も正しく表示されるよう調整。
(2) 内部オブジェクト
特定のページをダウンロードすると、以下のような内部オブジェクトが生成されます:- crawler: 現在のクローラオブジェクト。
- spider: URLを処理するSpiderオブジェクト。
- request: 最後に取得したページのリクエストオブジェクト。
- response: 最後に取得したページのレスポンスオブジェクト。
- settings: 現在のScrapy設定。
response.bodyでレスポンスデータを確認でき、response.headersでヘッダー情報を取得できます。response.selector.xpath()やresponse.css()を使ってHTMLやXMLの内容を検索することも可能です。