【新連載】Python業務自動化 第3回 Webスクレイピング実践入門

Python自動化

こんにちは!「Python業務自動化」連載も第3回を迎えました。第1回では自動化の全体像を、第2回ではファイル操作の自動化について学びましたね。今回はいよいよ、多くの方が興味を持つ「Webスクレイピング」に挑戦していきます。

Webスクレイピングとは、インターネット上のWebページから必要な情報を自動的に取得する技術のことです。手作業でコピー&ペーストしていたデータ収集作業を、プログラムで一瞬にして終わらせることができます。この記事では、プログラミング初心者の方でも理解できるよう、基礎から丁寧に解説していきます。

Webスクレイピングとは?基本を理解しよう

まずはWebスクレイピングの仕組みと、実践する上で知っておくべき注意点を確認しましょう。

スクレイピングの仕組み

Webスクレイピングは、大きく分けて2つのステップで行われます。

  • HTMLの取得:対象のWebページにアクセスし、そのページのHTMLデータをダウンロードします。
  • データの抽出:取得したHTMLの中から、必要な情報(テキストや画像URLなど)を取り出します。

Pythonでは、この一連の処理を簡単に行えるライブラリが充実しているため、初心者でも比較的取り組みやすい分野です。

スクレイピングを行う際の注意点

便利な技術である一方、スクレイピングには守るべきルールがあります。以下の点は必ず押さえておきましょう。

  • 対象サイトの利用規約を確認し、スクレイピングが禁止されていないかチェックする
  • 「robots.txt」でクロールの可否ルールを確認する
  • 短時間に大量のアクセスを行わない(サーバーに負荷をかけない)
  • 取得したデータの著作権・利用範囲に注意する

業務で利用する場合は特に、法的リスクを避けるためにも事前確認を徹底しましょう。

環境準備:必要なライブラリをインストールしよう

Pythonでスクレイピングを行う際によく使われるのが「requests」と「BeautifulSoup」という2つのライブラリです。

requestsのインストール

requestsは、WebページのHTMLデータを取得するためのライブラリです。以下のコマンドでインストールできます。

pip install requests

BeautifulSoupのインストール

BeautifulSoupは、取得したHTMLの中から必要なデータを抽出するためのライブラリです。こちらもコマンド一つでインストールできます。

pip install beautifulsoup4

この2つを組み合わせることで、Webスクレイピングの基本的な処理が完結します。

実践してみよう:簡単なスクレイピングコード

それでは実際にコードを書いて、Webページから情報を取得してみましょう。

HTMLの取得

まずはrequestsを使って、対象ページのHTMLを取得します。

import requests

url = "https://example.com"
response = requests.get(url)

print(response.status_code)  # 200が返ってくれば成功
print(response.text)         # 取得したHTMLの中身を表示

status_codeが「200」であれば、正常にページを取得できています。

データの抽出

次に、BeautifulSoupを使って取得したHTMLから必要な情報を抜き出します。ここでは、ページ内のすべての見出し(h1タグ)を取得する例を紹介します。

from bs4 import BeautifulSoup

soup = BeautifulSoup(response.text, "html.parser")

# h1タグをすべて取得
headings = soup.find_all("h1")

for heading in headings:
    print(heading.text)

このように、find_all()メソッドを使うことで、特定のタグを簡単に抽出できます。クラス名やIDを指定して、より細かく情報を絞り込むことも可能です。

# クラス名を指定して取得する例
items = soup.find_all("p", class_="item-name")

for item in items:
    print(item.text)

よくあるエラーとその対処法

初心者がスクレイピングでつまずきやすいポイントをまとめました。トラブルが起きたときの参考にしてください。

  • ステータスコードが403や404になる:アクセスが拒否されているか、ページが存在しません。URLの確認やヘッダー情報の追加を検討しましょう。
  • find_all()で何も取得できない:指定したタグやクラス名が実際のHTMLと異なっている可能性があります。ブラウザの「検証」機能でHTML構造を確認しましょう。
  • 文字化けが発生する:response.encodingを明示的に設定することで解決する場合があります。
response.encoding = response.apparent_encoding

エラーに直面したときは焦らず、一つずつ原因を切り分けていくことが上達への近道です。

まとめ

今回は「Webスクレイピング実践入門」として、以下の内容を解説しました。

  • Webスクレイピングの基本的な仕組みと注意点
  • requestsとBeautifulSoupを使った環境準備
  • 実際にHTMLを取得し、データを抽出する方法
  • よくあるエラーとその対処法

Webスクレイピングは、業務での情報収集を大幅に効率化できる強力な技術です。ただし、対象サイトへの配慮を忘れずに、正しいマナーを守って活用することが大切です。

次回、第4回では「取得したデータをExcelファイルに自動出力する方法」について解説していく予定です。スクレイピングしたデータを実際の業務でどう活用するか、ぜひ楽しみにしていてください!

\ 初心者から未経験でプロを目指す /

Pythonプログラミング マンツーマン詳細はこちら >

タイトルとURLをコピーしました