Scrapyの実行手順のメモ

この度Scrapyを使ってWebスクレイピングしてみたので、その大まかな実行手順をメモしておきます。  

【参考URL】

1.scrapyプロジェクトを作成

今回は例として「opuSyllabus」というプロジェクトを作成します。

$ scrapy startproject opuSyllabus
opuSyllabusという名前のディレクトリが作成されます。
中身は以下のような感じです。  

2.setting.pyに以下を追加

setting.pyに以下の1行を追加するとページのダウンロード間隔を平均1秒開けて実行してくれます。

意図せずにdos攻撃になっていまうので、ダウンロード感覚を1秒以上開けるようにしましょう これをしておかないと、最悪訴訟沙汰になります。

【参考】岡崎市立中央図書館事件 – Wikipedia  

3.Itemの作成

  まずitems.pyをいじる。  

4.spiderの作成

クロールを開始するURLと、その後の処理を記述します。  

まず移動。
$ cd opuSyllabus/opuSyllabus

基本的にこのディレクトリでコマンドを実行します。  
spiderを作成する。

第1引数はSpider名、第2引数はドメイン名。 scrapy genspider OSy http://www0.osakafu-u.ac.jp/syllabus/

これで既存のspiderディレクトリの中にOSy.pyというファイルが作成されます。  

5.spiderを編集する。

  • 1行目を削除
  • start_uralsのURLがおかしいので修正
  • parse関数の中身を編集  

【メモのメモ】相対URLから絶対URLに変換する時によく使う、urlparse.urljoin()相当のメソッドがもともと入っているのでわざわざimportする必要はない。  

普通はCrawlSpiderを使ってrules文などでリンクを辿っていくみたいですが、 今回辿るURLは相対URLなので、この方法でのやり方がわからないのでCrawlSpiderを使わずに記述しました。。

httpsだと無理説ある。

scrapyの実行と同時にparse関数が実行されるので、 11行目のように引数を取り、parse_topics関数を実行させてリンク先でスクレイピングさせます。  

リンクを抽出する時に正規表現がわかっていないと辛いことが多々あるので参考リンクを載っけておきます。

【参考】

name属性にはspiderの名前、 allowed_domains属性にはクロールを許可するドメインのリスト、 start_urls属性には、クロールを開始するURLの一覧をリストで各々設定します。  

6.spiderを実行する

クローリングする。 $ scrapy crawl OSy

結果をcsvファイルなどに保存する場合は-oオプションを付けて以下のようにして実行します。

$ scrapy crawl OSy -o osy.csv