crawl_electricity.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #!/usr/bin/env python
  2. # -*- encoding: utf-8 -*-
  3. '''
  4. @Contact : liuyuqi.gov@msn.cn
  5. @Time : 2021/10/10 07:24:07
  6. @License : Copyright © 2017-2020 liuyuqi. All Rights Reserved.
  7. @Desc : 全球电力数据爬虫
  8. https://www.iea.org/fuels-and-technologies/electricity
  9. '''
  10. import re
  11. import sys
  12. import os
  13. import time
  14. import requests
  15. import pandas as pd
  16. import numpy as np
  17. headers = {
  18. 'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}
  19. res = requests.get(r'https://api.iea.org/stats/countries', headers=headers)
  20. # 获取所有国家
  21. countries = pd.DataFrame(res.json())
  22. countries = countries.dropna(subset=["region"])
  23. dataList = []
  24. for i, country in enumerate(countries["stats"]):
  25. params = {
  26. "countries": country,
  27. "startYear": 1990, }
  28. res = requests.get(
  29. r'https://api.iea.org/stats/indicator/TotElecCons', headers=headers, params=params)
  30. df = pd.DataFrame(res.json())
  31. try:
  32. data = df[["year"]].copy()
  33. data[country] = df["value"]
  34. data.set_index("year", inplace=True)
  35. dataList.append(data)
  36. print(f"{i}")
  37. except:
  38. continue
  39. results = pd.concat(dataList, axis=1).fillna(0).loc[:"2018"]
  40. results.to_csv("results.csv")