【Python】スクレイピングしたcsvデータをHTMLに変換する

 

こんにちは。のっくんです。

 

今日の記事では、スクレピングなどで取得したcsvファイルをHTMLに変換して見やすくする方法について紹介します。

 

せっかくスクレイピングした情報なので、自分で見るときに見やすい方がいいですよね。

 

Pythonを使うと、20行くらいで簡単に実装できちゃうんです。

 

ネコ
csvファイルってそのままだと見にくいから、見やすく加工する方法について教えてくれるってこと?
のっくん
そうだよ。データを見るときに便利な方法だから是非覚えていってね。

 

スポンサーリンク

 

使用するcsvファイル

 

使用するcsvファイルは、前回の記事

 

https://ymgsapo.com/scraping_soccer_ranking

 

で取得したサッカーのランキング表にしましょう。

 

中身は以下の通り。

 

 

松本が首位から2位になってしまった、悔しいって言いたくなる表ですが、こちらを使います。

 

勝ち点が見づらいし、なんか味気ないですよね。このデータをHTMLに出力して見やすくしたり、順位によって背景色が変わるようにしたいと思います。

 

その前に、、

 

よく見ると、1列目と最後の列のデータがありませんね。ネットからスクレイピングしてくると、画像などが入っていた箇所が空欄になってしまいます。

 

HTMLに出力する前にこのような列は削除しましょう。

 

pandasを使う

 

のっくん
csvファイルの読み込みってどうすれば良かったのかな?
少年
うーん。なんだっけ。。パンダ??

 

惜しいですね。pandasというライブラリを使います。これを使うと、csvファイルを読み取ってデータの整理や統計が簡単にできるんです。

 

pandasを使って、空欄が入った列を削除してみます。

 

to_html_pandas.py

 

read_csvでランキング表を読み取っています。データが読み取れなかった箇所は欠損値(NaN)として扱われます。

 

このNaNが1つでも入った列を削除するには、dropnaを使っています。

 

axis=1というのは、列を削除するという意味です。how=”any”は、1つでもNaNがあったら削除するという意味です。

 

実行すると、、

 

 

いい感じに整理されました。1番左の数値はインデックスですが、HTMLに変換するときは必要ありませんね。

 

HTMLに変換する

 

pandasの便利なところは、HTMLに変換する関数があることです。to_html関数を使うと、pandasのデータをHTMLのテーブル形式にしてくれます。

 

先ほどのコードを拡張してみます。

 

to_html_pandas.py

 

html_stringには、HTMLを表示するときに必要な基本的な<head>や<body>を入れています。スタイルシートのパスの指定もここでしています。

 

to_html関数の中では、スタイルシートのクラス名(mystyle)を指定しつつインデックスは読み込まないようにしています。

 

コードを実行するとHTMLファイルが出力されるので、ブラウザ開くと、、、

 

 

見やすくなりました。

 

使用したスタイルシートも載せておきます。

 

mystyle.css

 

nth-childを使うと、行の背景色を変更できるみたいです。上位2チームは緑、下位2チームは赤になってます。Jリーグでは自動昇格圏、自動降格圏と呼ばれます。

 

ちなみに、tr:hoverを指定しているのでマウスポインタを表に持っていくと、背景がシルバーになるようにしています。

 

実際のページはこちら:

Soccer Talk

 

以上となります。お疲れ様でした。

ABOUTこの記事をかいた人

のっくん

理系院卒で大企業の研究所に就職。 趣味はプログラミング、レアジョブ英会話、筋トレ、旅行。 Twitter:@yamagablog