🐍
Scrapyでクローリングしてみた
動機
- とあるサイトに記載されている情報を取得してデータベース化したかった
- BeautifulSoupでのスクレイピングは前回やってみたので、今回は別のライブラリを使ってみた
環境
- Python 3.9.5
- Scrapy 2.6.1
やったこと
- Scrapyプロジェクトを作成
- Spider shellを使って構造から情報を取得するのに必要な手順を確認
- Spider: 記載された内容に合わせてページの情報を取得してくれる
- Spiderを作成
- Spiderの実装を修正
- クロージングを実行
# インストール(poetryを使用)
poetry add scrapy
poetry shell
# Scrapyプロジェクトの作成
scrapy genproject test_scrapy
cd test_scrapy/
# Scrapy Shellを実行
# 指定したURLの情報を読み込んだ状態で対話コンソールが開始される
scrapy shell https://test.com
In [1]: rows = response.css('table tr')
...
# Spiderを作成
scrapy genspider test_spider https://test.com
# Spiderの内容を変更して、クローリングを実行
scrapy crawl test_spider
感想
- cssやxpathで要素をとってくることになれていれば難しくなかった
- Spiderには、「途中でリンクを見つければ、その先のページではこんな感じで動く」という動作を実装できるので、階層を潜ってクローリングするのは簡単にかけた
Discussion