0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

python3.7でwebページ取得

Last updated at Posted at 2020-05-01

最初に

環境:macOS Catalina
   python3.7
   pipが使えるように。

会社の新人研修以来ほぼ1年ぶりにpythonでwebページ取得をやってみました。
2020年1月にpythonのサポートが切れたようで、最初の環境構築に非常に時間がかかりました。

今回は、東京電力の電力需要がCSV形式でサイト上に載っており、非常に簡単な内容でした。
スクレイピングをやるまでの練習としてぜひご利用ください。

環境構築の部分は省いて、完成した部分だけを記載します。

今回のゴール

ゴール:東京電力の過去の電力使用実績データに記載のCSVファイルの取得
CSVファイルには、毎日、データが更新され、年ごとのファイルにデータがまとめられています。

こちらのCSVファイルは「juyo-20XX.csv」と年ごとに名前がつけられており、URLも年ごとにcsv名が違うだけでした。
そのため、以下の3点をfor文で回すように作りました。

  1. datetimeの情報を取得して2016年から今年までの年ごとのCSV名をURLに代入
  2. requestsを使ってURLからwebページを取得
  3. 取得した情報をファイルに保存

準備

モジュールのインポート

最初にモジュールを2つインポートします。
requests:webページの取得
datetime:日付を取得

# モジュールのインポート
import requests
import datetime

for文で使うデータの準備

# 今年の西暦取得
today = datetime.date.today()
# 2016年から今年まで
year = list(range(2016, today.year+1, 1))
# 西暦を入れてURL取得準備
url_1 ='https://www.tepco.co.jp/forecast/html/images/juyo-' 
csv = '.csv'

本番

# for文回す
for i in year:  #年ごとに
    print(i)    #何年のデータを取得しているかわかるように
    url = url_1+str(i)+csv  #url
    r = requests.get(url)   #urlの内容取得
    f = open('juyo'+str(i)+csv,'w') #ファイルを年の名前をつけて新規作成(既に同じ名前がある場合はそのファイルを開く)
    f.write(r.text)        #ファイルにwebページの情報を上書き
    f.close()   #ファイルを閉じる
    print('OK') #取得で来たことを確認できるように

print('END')

最後に

ここまでのコードを拡張子「.py」で保存し、ターミナルで実行すると実行したディレクトリにファイルが作られます。

ターミナルでの実行例

今回はtelco.pyにここまでのコードを保存したことにします。
tepco.pyがあるディレクトリに移動するか、tepco.pyで指定する際にディレクトリの情報もつけましょう。


python tepco.py

せっかく毎日定時更新されるデータなので、ここからcrontabやlaunchedで定期実行までやろうかと思いましたが、それはまたいつか。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?