scrapy
scrapy は
スクレイピング
クローリングの
フレームワーク
インストールは
pip3 install scrapy
これをつかってはてな匿名ダイアリーのプロジェクトを作成
通称は
増田
らしい
このURLである
https://anond.hatelabo.jp/
をクロールする
scrapy startproject anond
というように
scrapy startproject プロジェクト名
で
プロジェクトを作成
cd anond/
で移動
sudo apt install tree
で
treeコマンドをインストール
tree
で構成をみると
. ├── anond │ ├── __init__.py │ ├── items.py │ ├── middlewares.py │ ├── pipelines.py │ ├── settings.py │ └── spiders │ └── __init__.py └── scrapy.cfg
となっているのがわかる
次に
scrapy に
はてな匿名ダイアリーを設定
settings.py でクロール間隔の調整
デフォルトだと間隔0秒で最大16リクエストになるので
負荷がかかる
なので平均1秒あけるようにしてダウンロードするようにする
vim anond/settings.py
でファイルを開き
28行目の
#DOWNLOAD_DELAY = 3
の部分を
DOWNLOAD_DELAY = 1
と変更し保存
次にitem.py を編集し
URLのみ取得するように
url = scrapy.Field() を追記するので
vim anond/items.py
でファイルをひらき
class AnondItem(scrapy.Item): # define the fields for your item here like: # name = scrapy.Field() pass
の部分を
class AnondItem(scrapy.Item): # define the fields for your item here like: # name = scrapy.Field() url = scrapy.Field() pass
として保存
次に Spider の作成
コマンド実行時に
第1引数に スパイダーの名前
今回は abibd_spider
第2引数に ドメインを指定
今回なら anond.hatelabo.jp
となる
scrapy genspider anond_spider anond.hatelabo.jp
実行したあとに
tree
を実行すると
. ├── anond │ ├── __init__.py │ ├── __pycache__ │ │ ├── __init__.cpython-36.pyc │ │ └── settings.cpython-36.pyc │ ├── items.py │ ├── middlewares.py │ ├── pipelines.py │ ├── settings.py │ └── spiders │ ├── __init__.py │ ├── __pycache__ │ │ └── __init__.cpython-36.pyc │ └── anond_spider.py └── scrapy.cfg
という構造になっているのがわかる
次にはてな匿名ダイアリーのURL抽出処理の実装
vim anond/spiders/anond_spider.py
でファイルをひらき
7行目のURLが http になっているので
https に変更する
start_urls = ['https://anond.hatelabo.jp/']
次にパースしたときの処理を追記
今回はパーマリンクURL をたどるように設定
9行目からの
def parse(self, response): pass
を
def parse(self, response): for url in response.css('p.sectionfooter a::attr("href")'): yield response.follow(url) pass
へ変更
これで準備できたので実行
scrapy crawl anond_spider
これでクローリングが実行され
URLの取得ができる
参考書籍は
なお kindle Fire でみるときには
拡大しなくても見れるので
10インチがおすすめ
カバーがほしい場合には
マグネット機能で閉じたらOFFにしてくれる純正がおすすめ