[Python] HTMLファイルからtableタグの内容をCSVファイル化する方法

PythonでHTMLファイルのテーブルタグをCSVファイルにを作成してみました。

↓がソースになります。

import datetime
import pandas
import csv

if __name__ == '__main__':
    url = input("Please input parse url : ")
    tables = pandas.read_html(url)
    now = datetime.datetime.now()
    filetimestamp = now.strftime('%Y%m%d-%H%M%S-%f')
    filename_prefix = input("Please input filename : ")
    for i in range(len(tables)):
        print(tables)
        filename = filename_prefix + str(i).zfill(5) + "_" + filetimestamp + ".csv"
        tables[i].to_csv(filename)
目次

解説

今回は「pandas」というモジュールを使用します。

利用するためには2行目でまずpandasをimportしております。 デフォルトコンポーネントではないので、

入れていない人は「pip」でインストールしましょう。

import datetime
import pandas
import csv

if __name__ == '__main__':
    url = input("Please input parse url : ")
    tables = pandas.read_html(url)
    now = datetime.datetime.now()
    filetimestamp = now.strftime('%Y%m%d-%H%M%S-%f')
    filename_prefix = input("Please input filename : ")
    for i in range(len(tables)):
        print(tables)
        filename = filename_prefix + str(i).zfill(5) + "_" + filetimestamp + ".csv"
        tables[i].to_csv(filename)

pandasはデータ解析によく使われるモジュールで、データ解析に必要な機能はほぼそろっています。

今回は7行目で「htmlの取得」と「取得したデータのCSV化」を利用しています。

import datetime
import pandas
import csv

if __name__ == '__main__':
    url = input("Please input parse url : ")
    tables = pandas.read_html(url)
    now = datetime.datetime.now()
    filetimestamp = now.strftime('%Y%m%d-%H%M%S-%f')
    filename_prefix = input("Please input filename : ")
    for i in range(len(tables)):
        print(tables)
        filename = filename_prefix + str(i).zfill(5) + "_" + filetimestamp + ".csv"
        tables[i].to_csv(filename)

HTML通信用の「requests」モジュールとHTML解析用の「BeautifulSoup4」を使用すれば、

もっと細やかな解析ができます。 tableタグからCSVファイル抽出するだけならば「pandas」をオススメします。

公式:http://pandas.pydata.org/

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミングposted with ヨメレバ

Al Sweigart オライリージャパン 2017-06-03

Amazon

Kindle

楽天ブックス

7net

honto

e-hon

紀伊國屋書店

よかったらシェアしてね!
  • URLをコピーしました!
目次