PythonのPandasモジュールのread_html使うとWEB上のhtmlファイルを読み込むことができます。
ですが、必要なライブラリをインストールしていなかったり、表(テーブル)以外のデータを読み込もうとするとエラーが発生します。
read_htmlメソッドで発生しがちな次の4つのエラーの対処法を解説しています。
エラー対処法
これらのエラーに対処するポイントは以下の2点です。
まずは、以下3つのライブラリをインストールします。そして、読み込めるのは表があるページのみで、読み込み対象は表のみになります。
ライブラリのインストール
3つのライブラリをインストールします。
pip install lxml
pip install html5lib
pip install bs4
②データ取得実行
データ取得を実行します。
import pandas as pd
url = 'https://stocks.finance.yahoo.co.jp/stocks/detail/?code=998407.O'
df = pd.read_html(url)
URLは、日経平均株価【998407】:国内指数 – Yahoo!ファイナンスです。
https://stocks.finance.yahoo.co.jp/stocks/detail/?code=998407.O
無事取得できました。
[ 0 1 2 3
0 日経平均株価 NaN 19389.43 前日比+724.83(+3.88%),
0 1
0 株価予想 どうなる?明日の日経平均,
0 1
0 日経平均株価 NYダウ
1 TOPIX ナスダック総合
2 ジャスダックインデックス S&P 500
3 香港ハンセン FTSE 100
4 上海総合 DAX
5 ムンバイSENSEX30 CAC 40,
0 \
0 ピクテ・ゴールド(H有)その他リターン(1年)19.94%
1 グローバルSDGs株式ファンドその他リターン(1年)5.27%
2 eMAXIS Slim全世界株式(オール・カントリー)その他リターン(1年)3.91%
1
0 パインブリッジ・キャピタル証券F(H有)その他リターン(1年)6.35%
1 リスクコントロール世界資産分散ファンドその他リターン(1年)4.81%
2 米国株式配当貴族(年4回決算型)国際株式リターン(1年)2.21% ,
0 \
0 総合 値上がり率 1. 新都HLD+45.45% 2. スガイ化+28.30% 3. アマガ...
1
0 東証1部 値上がり率 1. カネコ種+19.95% 2. セグエG+18.28% 3. 小林... ]
3つのライブラリをインストールする理由
なぜ3つものライブラリをインストールする必要があるのかというと、ページの解析はBeautifulSoup4で行います。その際、テーブルの解析にlxmlを使用します。
このとき、lxmlでhtmlの解析に失敗した場合に、html5libを使用します。ちなみに、html5libは解析能力に優れ、htmlの補完もできるが重いライブラリです。
ただし、html5libもインストールすることが推奨されているためです。
エラー内容の詳細
第1のエラー
import pandas as pd
url = 'https://www.yahoo.co.jp/'
df = pd.read_html(url)
#出力
# ImportError: lxml not found, please install it
lxmlがインストールされていないとのこと。
lxmlとは?
pythonのライブラリの一種で、htmlやxmlを解析するもの。
非常に軽い。ただし、厳密なマークアップにしか対応していないため、解析に失敗することがある。
lxmlのインストール
pip install lxml
第2のエラー
html5libとは?
lxmlを無事インストールし、再度実行すると次のようなエラーが発生します。
「ImportError: html5lib not found, please install it」
こちらはhtml5を解析するもの。
lxmlよりも高性能。無効なマークアップから正しいマークアップを自動生成できる。その代わり重い。
lxmlでhtmlの解析に失敗した場合に使われる。
html5libのインストール
pip install html5lib
第3のエラー
BeautifulSoup4 (bs4) とは?
html5libを無事インストールし、再度実行すると次のようなエラーが発生します。
「ImportError: BeautifulSoup4 (bs4) not found, please install it」
BeautifulSoup4 (bs4) はhtmlやxmlを解析するもの。
ページ解析の大本となるライブラリ。
今回のテーブルの解析には、バックエンドでlxmlやhtml5libが使われる。
BeautifulSoup4 (bs4) のインストール
pip install bs4
第4のエラー
bs4を無事インストールし、再度実行すると次のようなエラーが発生します。
「ValueError: No tables found」
表データが見つからない。つまり、表がないページには使用できないということです。
表データの取得
表データがあるサイトとして、yahooファイナンスの日経平均株価【998407】ページでトライ。