superi

主にキャリアと金融を嗜むメディア

PythonでAWSのIPアドレスの範囲を取得し、CSVで出力する


スポンサーリンク

目的については別途書きますが、AWSで公開されているJSON形式のIPアドレスの範囲を取得し、CSVファイルとして出力します。

やるべきこととしては、

(1) AWSのWebサイト(※1)をスクレイピングし、データを取得。

(2)取得したJSON形式のデータをcsv形式で書き込み、保存。

 一旦そんなところですね。

1.AWSのWebサイトをスクレイピングし、データを取得

スクレイピングにはPython標準ライブラリのurllibを使用します。その他jsonとcsvを扱うためのライブラリも用意します。

#ライブラリのインポート

import urllib
import json
import csv

#url(※1)にアクセスし、データ取得

html = urllib.urlopen("https://ip-ranges.amazonaws.com/ip-ranges.json")

responseJson = json.loads(html.read())

2.取得したデータをcsv形式で書き込み、保存

json形式は辞書型ライクに扱えますので、keyでヘッダーを取得し、valueで値を取得します。

head = responseJson.get("prefixes")[0].keys()

#ファイルオープン

with open('ip_prefix.csv', 'w') as file:
  ff = csv.writer(file)
  ff.writerow(head)

  #リストの数だけループ
  for i in range(len(responseJson.get("prefixes"))):

  #AMAZONに該当するserviceにすべてのAWSのIPが含まれています

    if responseJson.get("prefixes")[i].values()[2] == 'AMAZON':
      ff.writerow(responseJson.get("prefixes")[i].values())

ところで最近は、withでファイルオープンがモダンなやり方だそうです。

一旦IPアドレスのcsvファイルができあがりました。

 

次回はAWS以外のIPアドレスの範囲を取得したいと思います。

 

PythonによるWebスクレイピング

PythonによるWebスクレイピング

 
Pythonチュートリアル 第3版

Pythonチュートリアル 第3版

  • 作者: Guido van Rossum,鴨澤眞夫
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2016/03/24
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る
 

 

 

www.superi.jp

 

参考

※1 AWS IPアドレスの範囲

python samples