。以下の方法があります:","クランチベース","会社概要","素晴らしいサポートをありがとう!","クイックリンク","アフィリエイト・プログラム","プレミアム","ProxyScrape プレミアムトライアル","プロキシの種類","代理国","プロキシの使用例","重要","クッキーポリシー","免責事項","プライバシーポリシー","ご利用条件","ソーシャルメディア","フェイスブック","LinkedIn","ツイッター","クオラ","テレグラム","ディスコード","\n © Copyright 2025 -Thib BV| Brugstraat 18 | 2812 Mechelen | ベルギー | VAT BE 0749 716 760\n"]}
Webスクレイピングは、Python開発者、データアナリスト、そしてデータセットを扱うすべての人にとって不可欠なスキルとなっている。構造化されたリッチなデータに関して言えば、ウェブサイトにあるテーブルは情報の宝庫であることが多い。製品カタログ、スポーツ統計、財務データなど、ウェブを探し回っているのであれ、Pythonを使ってテーブルデータを抽出して保存する能力は非常に貴重なツールです。
この実用的なガイドでは、Pythonを使ってウェブサイトからテーブルをスクレイピングするプロセスを段階的に説明します。最後には、requests、Beautiful Soup、さらにはpandasのような一般的なライブラリを使用してテーブルデータにアクセスし、CSVファイルのような再利用可能な形式で保存する方法を知ることができます。
技術的な詳細に入る前に、フォローするために必要なものを説明しよう:
pipコマンドを使って必要なライブラリをインストールします。ターミナルで以下のコマンドを実行するだけで、インストールが完了します:
pipinstall requestsbeautifulsoup4 pandas
ウェブスクレイピングプロジェクトの最初のステップは、ターゲットとなるウェブサイトの構造を分析することです。この例では、ホッケーチームの順位表を表示するテーブルを特徴とするサンプルウェブサイトからデータをスクレイピングします。下記はテーブルのプレビューです:
このテーブルがHTML構造の中でどのように表示されるかを示す。
最初のステップは、スクレイピングしたいウェブページを取得することである。リクエスト・ライブラリを使ってHTTPリクエストを送信し、テーブル・コンテンツを取得するために使っているダミー・ウェブサイトからHTMLコンテンツを取得する。
url = "https://www.scrapethissite.com/pages/forms/"
response = requests.get(url)
if response.status_code == 200:
print("Page fetched successfully!")
html_content = response.text
else:
print(f"Failed to fetch the page. Status code: {response.status_code}")
exit()
HTMLにおいてテーブルとは、スプレッドシートのように行と列でデータを表示する構造化された方法である。テーブルは <table>
タグに分割され、その内容は行 (<tr>
)とセル(<td>
データセルまたは <th>
ヘッダー・セルの場合)。テーブルの構造を簡単に説明しよう:
<table>
タグを使うと、すべての行とセルのコンテナとして機能する。<tr>
(テーブル行)はテーブルの水平方向のスライスを表す。<td>
タグは個々のデータ値(または <th>
タグをヘッダーに使用)。 例えば、このスクリプトでは <table>
タグに特定のクラス (class="table"
を使用して行とセルを抽出する。 美しいスープ.これにより、系統的にデータを引き出し、分析や保存の準備をすることができる。
soup = BeautifulSoup(html_content, "html.parser")
table = soup.find("table", {"class": "table"})
if not table:
print("No table found on the page!")
exit()
このステップでは、抽出したテーブルデータをCSVファイルに保存し、将来使用できるようにするとともに、pandas DataFrameとして表示し、データがどのような構造になっているかを確認できるようにします。CSVとして保存することで、後でExcelや Google Sheets、Pythonなどのツールでデータを分析することができます。
headers = [header.text.strip() for header in table.find_all("th")]
rows = []
for row in table.find_all("tr", class_="team"):
cells = [cell.text.strip() for cell in row.find_all("td")]
rows.append(cells)
df = pd.DataFrame(rows, columns=headers)
csv_filename = "scraped_table_data_pandas.csv"
df.to_csv(csv_filename, index=False, encoding="utf-8")
print(f"Data saved to {csv_filename}")
このコードを実行すると、pandasはファイル名を scraped_table_data.csv(スクレイプド・テーブル・データ.csv
を作業ディレクトリに置くと、抽出されたデータが以下のようにコンソールに出力される:
チーム名 年 勝 敗 OT 敗戦 勝率 得失点 (GF) 得失点 (GA) + / -
0ボストン・ブルーインズ1990 44 24 0.55 299 264 35
1バッファロー・セイバーズ1990 31 30 0.388 292 278 14
2カルガリー・フレイムズ1990 46 26 0.575 344 263 81
3シカゴ・ブラックホークス1990 49 23 0.613 284 211 73
4デトロイト・レッドウィングス1990 34 38 0.425 273 298 -25
以下は、ウェブサイトからテーブルデータをスクレイピングし、CSVファイルに保存し、抽出したデータを表示するための完全なPythonスクリプトです。このスクリプトは、このガイドで取り上げたすべてのステップを1つのまとまったワークフローにまとめたものです。
import requests
from bs4 import BeautifulSoup
import pandas as pd
url = "https://www.scrapethissite.com/pages/forms/"
response = requests.get(url)
if response.status_code == 200:
print("Page fetched successfully!")
html_content = response.text
else:
print(f"Failed to fetch the page. Status code: {response.status_code}")
exit()
soup = BeautifulSoup(html_content, "html.parser")
table = soup.find("table", {"class": "table"})
if not table:
print("No table found on the page!")
exit()
headers = [header.text.strip() for header in table.find_all("th")]
rows = []
for row in table.find_all("tr", class_="team"):
cells = [cell.text.strip() for cell in row.find_all("td")]
rows.append(cells)
df = pd.DataFrame(rows, columns=headers)
csv_filename = "scraped_table_data_pandas.csv"
df.to_csv(csv_filename, index=False, encoding="utf-8")
print(df.head())
print(f"Data saved to {csv_filename}")
このガイドでは、ウェブサイトの構造を理解し、データを抽出し、分析のために保存するというプロセスを段階的に説明してきました。リサーチ用のデータセットを構築するにしても、データ収集を自動化するにしても、単にウェブスクレイピングの可能性を探るにしても、これらのテクニックをマスターすることで世界が広がります。
スクレイピング中に、ウェブサイトが課すIP禁止やレート制限などの課題に遭遇するかもしれない。そこで重要になるのがプロキシです。プロキシを使えば、以下のことが可能になります:
ProxyScrapeは、Webスクレイピング用に調整された、 レジデンシャル、 プレミアム、 専用、 モバイルプロキシなどの幅広いプロキシを提供しています。信頼性と拡張性に優れたプロキシソリューションは、大規模なスクレイピングプロジェクトを中断することなく処理し、スムーズで効率的なデータ収集を実現します。