🐍

Scrapyでクローリングしてみた

2024/03/24に公開

動機

  • とあるサイトに記載されている情報を取得してデータベース化したかった
  • BeautifulSoupでのスクレイピングは前回やってみたので、今回は別のライブラリを使ってみた

環境

  • Python 3.9.5
  • Scrapy 2.6.1

やったこと

  1. Scrapyプロジェクトを作成
  2. Spider shellを使って構造から情報を取得するのに必要な手順を確認
  • Spider: 記載された内容に合わせてページの情報を取得してくれる
  1. Spiderを作成
  2. Spiderの実装を修正
  3. クロージングを実行
# インストール(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