
【Python入門】14章の演習プログラム
14章の演習プログラムでは、これまで学んできたスクレイピングの基礎知識を実際のコードに落とし込み、Webページの取得、情報抽出、そして定期実行といった処理を体験します。これにより、基礎を確実に身につけ、より実践的なPythonプログラミングへとステップアップできるでしょう。
次の15章では、データベースとWebアプリケーションについて学んでいきます。ここでは、14章で学んだ各テーマを簡単にまとめ、サンプルプログラムを通じて振り返ります。

プログラムのダウンロード
「ダウンロード」から、JupyterLab で実行できるサンプルプログラムがダウンロードできます。ファイルは、ESET Endpoint Securityでウイルスチェックをしておりますが、ダウンロードとプログラムの実行は自己責任でお願いいたします。
1.Webページの取得方法
Webスクレイピングの第一歩は、対象となるWebページのHTMLソースを取得することです。通常、requestsライブラリを使用してWebページの内容を取得します。
項目 | 説明 |
---|---|
Webページの取得方法 | requestsライブラリを使い、HTTPリクエストを送信してWebページを取得する。 |
主な関数 | requests.get(url) を利用して、指定URLのページ内容を取得する。 |
サンプルプログラム (requests)
import requests
url = "https://example.com"
response = requests.get(url)
print(response.text) # 取得したHTMLソースを表示
実行結果
<!doctype html>
<html>
<head>
<title>Example Domain</title>
<meta charset="utf-8" />
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type="text/css">
body {
background-color: #f0f0f2;
margin: 0;
padding: 0;
font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
}
div {
width: 600px;
margin: 5em auto;
padding: 2em;
background-color: #fdfdff;
border-radius: 0.5em;
box-shadow: 2px 3px 7px 2px rgba(0,0,0,0.02);
}
a:link, a:visited {
color: #38488f;
text-decoration: none;
}
@media (max-width: 700px) {
div {
margin: 0 auto;
width: auto;
}
}
</style>
</head>
<body>
<div>
<h1>Example Domain</h1>
<p>This domain is for use in illustrative examples in documents. You may use this
domain in literature without prior coordination or asking for permission.</p>
<p><a href="https://www.iana.org/domains/example">More information...</a></p>
</div>
</body>
</html>
2.Webページから特定の情報を抽出する(BeautifulSoup)
取得したHTMLから、必要な情報だけを抽出するために、BeautifulSoupライブラリを活用します。タグや属性を指定してデータを取り出すことが可能です。
項目 | 説明 |
---|---|
BeautifulSoupによる情報抽出 | HTMLパーシングを行い、タグやクラスなどで指定してデータを抽出する。 |
主な関数 | soup.find() や soup.find_all() を利用して特定の要素を取得する。 |
サンプルプログラム (BeautifulSoup)
from bs4 import BeautifulSoup
import requests
url = "https://example.com"
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")
# 例:すべてのリンクを抽出
links = soup.find_all("a")
for link in links:
print(link.get("href"))
実行結果
https://www.iana.org/domains/example
3.スクレイピングを定期的に実行する(schedule)
定期的にスクレイピング処理を実行することで、最新情報の取得や監視が可能になります。scheduleライブラリを用いれば、簡単に定期実行のジョブを設定できます。
項目 | 説明 |
---|---|
スクレイピングの定期実行 | scheduleライブラリを使い、指定した間隔でスクレイピング処理を自動実行する。 |
主な関数 | schedule.every().minutes.do(job) などでジョブを設定する。 |
サンプルプログラム (schedule)
import schedule
import time
import requests
from bs4 import BeautifulSoup
def job():
url = "https://example.com"
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")
# 例:タイトルを抽出して表示
title = soup.find("title").text
print("ページタイトル:", title)
# 1分ごとにjob関数を実行
schedule.every(1).minutes.do(job)
while True:
schedule.run_pending()
time.sleep(1)
実行結果
ページタイトル: Example Domain
ページタイトル: Example Domain
ページタイトル: Example Domain
ページタイトル: Example Domain
まとめ
14章の演習プログラムでは、Webページの取得、BeautifulSoupを使った情報抽出、そしてscheduleライブラリによる定期実行といった、スクレイピングの全プロセスを実践的に学びます。実際に手を動かしながら演習に取り組むことで、基礎がより確実なものとなり、次の15章へとスムーズに進む準備が整うでしょう。さあ、14章の総まとめとして用意された演習プログラムに挑戦し、学びを実践に活かしていきましょう。