現在の見出し:3.1節:URL入力機能の作成
見出し一覧
- 3.1節:URL入力機能の作成
- - input()によるURL取得機能の実装
- - while文による継続実行機能の実装
【PR】『Python』を学べる企業・個人向けのプログラミングコース
input()によるURL取得機能の実装
前節(第2章 2.2節)で作成したコードを基盤として、input()関数関数は一定の処理をまとめたプログラムの塊です。によるユーザーからのURL入力取得機能を追加します。今までは固定のURLでスクレイピングを行っていましたが、実用的なツールとするためには任意のWebページを対象とできる機能が必要です。
input()関数はプログラムプログラムはコンピュータに対して何をすべきかを指示する一連の命令です。実行中に、ユーザーからキーボード入力を受け取る標準的な方法です。input()関数を使用することによって、実行のたびに異なるURLでスクレイピングを実行できるようになります。
変更項目 | 変更前 | 変更後 | 変更理由 |
---|---|---|---|
URL取得方法 | 固定URL(url = "https://example.com") | 動的入力(user_url = input()) | 任意のWebページを対象にするため |
変数変数はデータを一時的に記憶しておく場所です。名 | url | user_url | ユーザー入力であることを明確化 |
処理タイミング | プログラム開始時に固定 | プログラム実行中に取得 | 対話的な操作を可能にするため |
上記の変更により、スクレイピングツールの実用性が大幅に向上します。ユーザーは実行時に任意のURLを指定でき、様々なWebページに対してスクレイピング処理を適用できるようになります。また、変数名をuser_urlに統一することで、コードの可読性と保守性も向上します。
# コード
import requests
from bs4 import BeautifulSoup
import csv
# URL取得機能を追加
user_url = input("スクレイピングするURLを入力してください: ")
print(f"入力されたURL: {user_url}")
# HTMLデータを取得(変数名を修正)
response = requests.get(user_url)
print("HTMLデータ取得完了")
print(f"データサイズ: {len(response.text)}文字")
# HTML解析機能
soup = BeautifulSoup(response.text, 'html.parser')
print("HTML解析完了")
print(f"解析結果タイプ: {type(soup)}")
# 特定タグ抽出機能
title_element = soup.find('title')
print("タイトルタグ抽出完了")
print(f"抽出要素: {title_element}")
# 文字データ取得機能
if title_element:
title_text = title_element.text
print("文字データ取得完了")
print(f"タイトル: {title_text}")
else:
print("タイトルタグが見つかりません")
title_text = "タイトル不明"
# 複数要素抽出機能
h2_elements = soup.find_all('h2')
print(f"h2タグ抽出完了: {len(h2_elements)}個")
# CSV書き込み機能(修正)
filename = "scraped_data.csv"
file = open(filename, 'w', newline='', encoding='utf-8')
writer = csv.writer(file)
print("CSVファイル作成完了")
print(f"ファイル名: {filename}")
# データ行追加機能(ヘッダーのみ先に書き込み)
writer.writerow(['見出し', 'URL'])
file.close()
# 繰り返し処理機能(変数名を修正)
file = open("scraped_data.csv", 'a', newline='', encoding='utf-8')
writer = csv.writer(file)
for element in h2_elements:
h2_text = element.text.strip()
writer.writerow([h2_text, user_url])
file.close()
print("複数データ保存完了")
# 実行結果
スクレイピングするURLを入力してください: https://trends.codecamp.jp/
入力されたURL: https://trends.codecamp.jp/
HTMLデータ取得完了
データサイズ: 358677文字
HTML解析完了
解析結果タイプ: <class 'bs4.BeautifulSoup'>
タイトルタグ抽出完了
抽出要素: <title>
IT・プログラミング情報のコネクトメディア「trends.」(トレンズ)
</title>
文字データ取得完了
タイトル:
IT・プログラミング情報のコネクトメディア「trends.」(トレンズ)
h2タグ抽出完了: 19個
CSVファイル作成完了
ファイル名: scraped_data.csv
複数データ保存完了
行数 | 種別 | コード | 解説 |
---|---|---|---|
7行目 | 新規 | user_url = input("スクレイピングするURLを入力してください: ") |
input()関数を使用してユーザーからURLの入力を受け取ります。プロンプトメッセージでユーザーに何を入力すべきかを明確に指示します。 |
8行目 | 新規 | print(f"入力されたURL: {user_url}") |
ユーザーが入力したURLを表示して確認します。入力内容を明確にすることで、後続処理の対象URLを把握できます。 |
11行目 | 変更 | response = requests.get(user_url) |
前節のurl変数をuser_url変数に変更して、ユーザー入力のURLでHTTPリクエストを送信します。動的なURL指定が可能になります。 |
55行目 | 変更 | writer.writerow([h2_text, user_url]) |
前節のurl変数をuser_url変数に変更して、ユーザー入力のURLをCSVファイルに保存します。各データ行に対象URLが記録されます。 |