ログアウト中 ログイン

【Python】BeautifulSoup版スクレイピングツール開発講座 第3章3.1節「URL入力機能の作成」




現在の見出し: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が記録されます。
while文による継続実行機能の実装

第3章3.1節「while文による継続実行機能の実装」の続きを見る


すべてのカリキュラムを無料登録で学ぶ

プログラミング・マーケティング・AI活用方法を
今すぐ無料登録すると、全てのコンテンツが視聴可能になります。