
【Python入門】14章のまとめ
ここまで、14章ではPythonを使ったスクレイピング技術を概観してきました。実際にWebページをダウンロードし、そのHTMLを解析し、必要な情報を取り出す一連の流れを学びつつ、定期実行(scheduleライブラリ)まで踏み込みました。14章で扱った主なポイントをまとめて整理し、次に進むための準備をしましょう。

学習テーマ | 主な内容とポイント |
---|---|
Webページの取得方法(スクレイピング) | - 標準ライブラリurllib を使ったダウンロード方法- 外部ライブラリrequests を使うことで短いコードで実装- バイナリ書き込みでHTMLファイルを保存 |
Webページから特定の情報を抽出する(BeautifulSoup) | - 正規表現(reモジュール)によるパターンマッチの仕組み- BeautifulSoupを使った階層的なHTML解析- タグ名やクラス属性を指定して必要部分を抽出 |
スクレイピングを定期的に実行する(schedule) | - scheduleライブラリによる時間や曜日の設定- run_pending()による実行チェックと無限ループ構成- ターミナルから実行してCtrl+Cで停止、もしくはcron等と連携して本格運用 |
1.スクレイピングの基本ステップ
- Webページを取得
requests.get(url)
などを使ってHTMLを取得する。 - HTMLの解析
文字列や正規表現で処理する場合もあるが、大規模にはBeautifulSoupが有力。 - 必要な要素やテキストを抽出
タグ名・クラス名・idなどをもとにピンポイントで要素を取得し、.get_text()
などで中身を取り出す。 - 結果の利用
CSVやDBへ保存、可視化、機械学習などへ応用。
2.BeautifulSoupを使う利点
- HTMLをDOMツリーとして扱える : タグの階層構造を反映した形で要素を操作できる。
- 属性検索や部分的なテキスト抽出が容易 :
element.find("span", class_="...")
等で直接指定可能。 - 不完全なHTMLにもある程度対応 : パーサがHTMLの欠陥を修復しながら解析してくれる場合がある。
正規表現で行う場合はHTMLが変化したり、属性順序が変わっただけでマッチしなくなる可能性が高い点に注意が必要です。
3.定期実行(schedule)でスクレイピングを自動化
- ライブラリ
schedule
: 簡潔なコードで「毎日12時」「3時間ごと」「毎週月曜9:00」といったスケジューリングを設定可能。 - コードパターン:
schedule.every().day.at("12:00").do(scraping_job) while True: schedule.run_pending() time.sleep(1)
- 実行環境 : ターミナルで実行しっぱなしにするか、cronなど他のスケジューラと連携も可能。
- 注意点 : 過度なアクセスは相手サーバーに負荷を与えるため、利用規約やアクセス制限に配慮が必要。
今後のステップ
- 例外処理やログ : スクレイピング失敗時のリカバリや、エラー原因の追跡のために必要。
- 多様なウェブサイトへの対応 : JavaScriptで動的生成されるページへの対応にはSeleniumなど別ツールが求められる場合も。
- データの二次利用 : 抽出した情報を機械学習へ適用したり、データベースに蓄積して可視化・分析する。
次のコンテンツでは、14章の学びを総合的に試せる演習プログラムを用意しています。
14章までで「データ取得」「解析」「抽出」「定期実行」の一連のスクレイピングフローを理解できたはずです。次は各ステップをまとめて実装した演習に取り組み、さらに実務的なノウハウ(エラー処理・ログ・運用など)を身につけましょう。