LoginSignup
1
1

More than 1 year has passed since last update.

久々のpython3でScrapyを使ってWebスクレイピングをしてみた

Last updated at Posted at 2023-02-19

こんにちは、ひらきちです。
久々にプログラミング(1年ぶりくらい?)で、Webスクレイピングをしてみました。

昔は、Python3のjsonパース機能と、beautifulsoupを使ったりしていたのですが、
めんどくさいなーと思って調べたら、scrapyという素晴らしいライブラリが存在するじゃないですか!

そこで、今日はscrapyを学ぶのに必要な時間、サイトなど諸々まとめておきます。

Scrapyを学ぶのに参考にしたサイト

まず全体を学ぶならこちらがおすすめ。

そして、スクレイピングの中で「HTMLのどの要素を抽出するか」を選ぶために使うのがxpathやCSSセレクタ。今回はxpathを利用。xpathの書き方を学ぶために、以下のサイトを参考にしました。

また、商業向けに提供されているサイトでプログラミングの練習をするのはまずい(DDoSになりかねない)ので、以下の練習用サイトを使うとよさそうです。

学習時間

50分。

MacBookに基本的なターミナル開発環境は揃っている前提で、pip3 installから、スクレイピングがうまくいくまで約50分です。

前提条件

以下の条件を満たしていれば同様に短時間で学べると思います。

  • python3を一通り理解している
  • HTMLを一通り理解している
  • pip3を使ったことがある

注意点

商用サイトをスクレイピングする際には、DDoS(Distributed Denial of Service)にならないように、プログラムを制御する設定が必須。

以下の設定をすると、

  • 次のアクセスまで3秒を開ける
  • Robots.txtに従って動作する
    という振る舞いをするようです。
settings.py
DOWNLOAD_DELAY = 3
ROBOTSTXT_OBEY = True

あとはお行儀の良いクローリング(Webサイト巡回)をするなら、UserAgentを設定しておいた方が良いかもしれませんね。(ただGoogleがUserAgentを非推奨にした関係で、近い将来、UserAgentがなくなるかもしれませんが)

Next Action

ちょっと副業でデータ抽出とかこれでサクッと楽してできないかなーと狡いことを考えています(笑)
まぁ実際はそんなにうまくいかないと思うんですけどね。
好奇心が満たされたのでOKです。

おまけ:はまった点:

「MacBookのターミナル上でころんとドットの区別がつかなかった」

これはMacOS 12にしてから、Terminalの文字を変えたのが原因。
getメソッドの .get() が ,get() になっていたのが判別しづらいフォントでハマりました。

まぁこれは環境要因なので、Webスクレイピングの学びとはちょっと違うので「おまけ」とさせていただきましたw

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1