Scrapyの実行手順のメモ

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

 

【参考URL】

チュートリアル
http://scrapy-ja.readthedocs.io/ja/latest/index.html

よく使うコマンド
http://akiniwa.hatenablog.jp/entry/2013/09/29/013744

 

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関数を実行させてリンク先でスクレイピングさせます。

 

リンクを抽出する時に正規表現がわかっていないと辛いことが多々あるので参考リンクを載っけておきます。
正規表現を学べるサイト – NAVER まとめ
正規表現による文字列置換
忘れっぽい人のための正規表現チートシート – Qiita

 

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

 

6.spiderを実行する

 

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

 

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

コメントを残す