Pandas DataFrame で HTML テーブルを読み取る

Fariba Laiq 2023年10月10日
  1. read_html() メソッドを使用して Pandas DataFrame の HTML テーブルを読み取る
  2. read_html() メソッドを使用して URL から HTML テーブルを読み取る
  3. read_html() メソッドを使用して文字列から HTML テーブルを読み取る
  4. read_html() メソッドを使用してファイルから HTML テーブルを読み取る
Pandas DataFrame で HTML テーブルを読み取る

このチュートリアルでは、URL、文字列、またはファイルから HTML テーブルを読み取り、それらを Python で Pandas データフレームに変換する方法を示します。 read_html() は Pandas ライブラリの迅速で便利なメソッドで、Pandas データ フレーム内の HTML テーブルをスクレイピングするために使用されます。

read_html() メソッドを使用して Pandas DataFrame の HTML テーブルを読み取る

read_html() メソッドは、Web サイトの URL、HTML 文字列、または HTML テキスト ファイルを引数として受け取ります。 Web サイト、文字列、またはファイルには複数のテーブルが含まれている可能性があるため、すべてのテーブルをスクレイピングし、データ フレームのリストの形式で返します。

テーブルが存在しない場合、コードは ValueError: No tables found を返します。

lxml を Python にインストールする

lxml は、HTML および XML データのデータのスクレイピング、処理、および処理に使用される Python のライブラリです。 read_html() メソッドを使用する前に、次のコマンドを使用して lxml をインストールし、Jupyter Notebook を使用している場合はカーネルを再起動する必要があります。

#Python 3.x
pip install lxml

read_html() メソッドを使用して URL から HTML テーブルを読み取る

Web サイトの URL を read_html() メソッドの引数として渡し、すべてのテーブルを読み取り、それらを Pandas データフレームに保存します。 データフレームで len() メソッドを使用して、返されたテーブルの数をカウントできます。

ここでは、2つのテーブルのリストを取得します。 最初のテーブルにアクセスする場合は、リスト内のインデックス 0 を介してアクセスします。

コード例:

# Python 3.x
import pandas as pd

tables = pd.read_html("https://www.w3schools.com/html/html_tables.asp")
print("No of tables returned:", len(tables))
display(tables[0])

出力:

Pandas Read HTML From URL - Output

read_html() メソッドを使用して文字列から HTML テーブルを読み取る

次のコードでは、table 変数に格納された文字列形式の HTML テーブルがあります。 テーブルを Pandas データフレームに変換するには、read_html() メソッドを呼び出し、HTML 文字列を引数として渡します。

HTML 文字列にはテーブルが 1つしかないため、データフレームのリストの長さは 1 です。 インデックスを使用してアクセスすることで、テーブルを表示します。

コード例:

# Python 3.x
import pandas as pd

table = """<table>
    <thead>
        <tr>
            <th>Name</th>
            <th>Department</th>
            <th>Marks</th>
            <th>Age</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>Robert</td>
            <td>CS</td>
            <td>60</td>
            <td>20</td>
        </tr>
        <tr>
            <td>Sam</td>
            <td>SE</td>
            <td>81</td>
            <td>21</td>
        </tr>
        <tr>
            <td>Alia</td>
            <td>SE</td>
            <td>79</td>
            <td>20</td>
        </tr>
    </tbody>
</table>"""
df_table = pd.read_html(table)
display(df_table[0])

出力:

Pandas Read HTML From String - Output

read_html() メソッドを使用してファイルから HTML テーブルを読み取る

ファイル処理を通じて、Pandas データフレームのテキスト ファイルに格納された HTML テーブルを読み取ります。 まず、テーブルを含むテキスト ファイルを現在のディレクトリに置きます。

または、Jupyter ノートブックを使用している場合は、テキスト ファイルをホーム ディレクトリにアップロードする必要があります。 次に、テキスト ファイルを open() で読み取り、ファイルを読み取るため、モードとして filenamer を渡します。

read() メソッドを使用して、Pandas データフレームのファイル コンテンツを抽出します。

コード例:

# Python 3.x
import pandas as pd

table_path = "table.txt"
with open(table_path, "r") as f:
    df_table = pd.read_html(f.read())
display(df_table[0])

出力:

Pandas Read HTML From File - Output

著者: Fariba Laiq
Fariba Laiq avatar Fariba Laiq avatar

I am Fariba Laiq from Pakistan. An android app developer, technical content writer, and coding instructor. Writing has always been one of my passions. I love to learn, implement and convey my knowledge to others.

LinkedIn

関連記事 - Pandas DataFrame