Ordelio

Web ページの表を CSV ファイルとして保存する方法

CSV ファイルは、あらゆる表計算ソフトやデータベースで読み込めるプレーンテキストです。Web ページの表を CSV にすることは簡単ですが、アクセント記号の文字化け、間違った区切り文字、先頭のゼロの欠落を防いで保存するのは難しい作業です。4つの方法と、それぞれの注意点を解説します。

1. コピーして Excel に貼り付け、名前を付けて保存する

表を選択してコピーし、空白の Excel シートに貼り付けた後、「ファイル」メニューの「名前を付けて保存」コマンドを使用し、ファイルの種類として CSV UTF-8 を選択します。

適しているケース: すでに Excel が開いており、一度だけ小さな表を保存したい場合。

うまくいかないケース: CSV UTF-8 ではなく通常の CSV 形式を選択すると、Windows のコードページ以外のすべての文字(アクセント記号、キリル文字、中国語など)が疑問符に変わってしまいます。また、Excel は Windows の地域設定に合わせた区切り文字で書き出すため、多くの欧州システムでは「カンマ区切り」のファイルが実際にはセミコロンで区切られ、読み込むプログラム側でエラーになることがあります。さらに、貼り付け時に先頭のゼロが消えたり(01234 というコードが 1234 になるなど)、1-2 のような値が日付に変換されたり、表の周囲のテキストまで選択されてしまうことがあります。

2. Google スプレッドシート:貼り付けてからダウンロードする

Google スプレッドシートのファイルに表を貼り付け、「ファイル」メニューから「ダウンロード」を開き、カンマ区切り値 (.csv) 形式を選択します。

適しているケース: ブラウザがある環境ならどのパソコンでも使え、Excel は不要で、ファイルは常に UTF-8 で保存されます。

うまくいかないケース: ファイルには常にカンマが使用されますが、小数点にカンマを使う地域の Excel では、ファイルをダブルクリックしても列に分割されないことがあります。ファイル全体ではなく、現在表示しているシートのみがダウンロードされます。Excel と同様に、スプレッドシートでも貼り付け時に一部の値が日付や数値に変換されることがあります。

3. Python:pandas.read_html

すでに Python で作業している場合、pandas を使ってページ上のすべての表を読み込み、CSV に書き出すことができます:

pandas.read_html("https://example.com/page")[0].to_csv("table.csv", index=False)

括弧内の数値はページ上の表の位置を示します(最初の表の場合は 0)。pandas と lxml のインストールが必要です。

適しているケース: スクリプトを使って、毎週同じページや何百ものページを処理する場合。

うまくいかないケース: ブラウザのように見えないため、一部のサイトではエラー 403 でリクエストが拒否されます。そのため、自分でページをダウンロードして HTML を pandas に渡す必要があります。ログインが必要なページの向こう側にある表や、JavaScript がページの読み込み後に描画する表は読み取れません。[1] のような脚注マークがヘッダーや値に残ってしまい、セルに欠損値が含まれる列があると、整数が 8021407192.0 のように出力されることがあります。

4. ブラウザ拡張機能:閲覧中のページでワンクリック

拡張機能はブラウザで表示されている通りのページ上で直接動作するため、ログイン後のページや JavaScript で構築された表でも機能します。私たちが開発したのが、Ordelio テーブルコピー(無料、行数制限なし)です:

  1. ページを開き、拡張機能のアイコンをクリックします(または Alt+Shift+Y を押します)。ページ上のすべての表が一番大きいものから順にリストアップされ、マウスオーバーするとハイライトされます。
  2. CSV を押します:ブラウザがその表のファイルを保存します。ファイルは UTF-8 でエンコードされ Excel に認識させるマークが付くためアクセント記号も保護され、お使いの言語環境で小数点にカンマが使用される地域ではセミコロンが区切り文字になります(オプションでカンマ、セミコロン、タブを強制することも可能です)。

また、[1] のような脚注マークの削除、結合セルの繰り返しによる列の整列維持、01234 のようなコードをページ上の表記のままファイルに出力する機能も備えています(ファイルを開く表計算ソフト側で数値に変換される場合があります)。

うまくいかないケース: 現在ページに表示されている内容をそのまま保存するため、複数ページに分かれている表はページごとにファイル保存が必要であり、スクリプトのように自動でファイルを更新することはできません。

Microsoft Edge 用 Ordelio テーブルコピー を入手 Chrome版およびFirefox版:審査中

どの方法を選ぶべきか

Excel 名前を付けて保存Google スプレッドシートpandas拡張機能
ログインが必要なページはい(コピーによる)はい(コピーによる)いいえはい
アクセント記号の維持CSV UTF-8 のみはいはいはい
区切り文字の選択いいえ(Windowsの設定)いいえ(常にカンマ)はい(パラメータ)はい(オプション)
何百ものページを一括処理いいえいいえはいいいえ
新しいページ1つの処理時間約1分約1分初回は数分数秒

要約すると:公開ページに対して毎週実行するスクリプトには pandas を使用します。閲覧中のページから1回限りの保存を行う場合や、特にログインが必要なページの場合は、ページから直接保存するのが最適です。

これらのどの方法でも処理できない表が見つかりましたか?お知らせください。すべてのメッセージを確認しています。