サイエンティストとマーケターのはざま

Pythonとか広告とかデータ分析とかとか


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

前回に引き続き、 Microsoft Azureで公開されているxml形式のIPアドレスの範囲を取得し、CSVファイルとして出力します。

やるべきこととしては、

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

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

ファイルがxml形式になったことぐらいで、前回とそんなに変わらないですね。

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

前回と同様、urllibとcsvライブラリをインポートします。加えて、xmlもインポート。

import urllib
import xml.etree.ElementTree as ET
import csv

#ダウンロードしたいファイルを指定ファイル名で取得。

urllib.urlretrieve("https://download.microsoft.com/download/"
+ "0/1/8/018E208D-54F8-44CD-AA26-CD7BC9524A8C/PublicIPs_20160509.xml",
"Azure_PublicIPs.xml")

取得したxmlファイルをパース。
tree = ET.parse("Azure_PublicIPs.xml")
root = tree.getroot()

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

xmlファイルのタグを.tagで取得し、csvファイルのヘッダにします。

また、attrib.values()でxmlの各要素が取得できます。

#ファイルオープン

with open('ip_prefix_azure.csv', 'w') as file:
  ff = csv.writer(file)

#csvのヘッダー
  ff.writerow([root[0].tag] + [root[0][0].tag] + ["service"])
  for i in range(len(root)):
    for j in range(len(root[i])):

#要素の数だけループ
      ff.writerow(root[i].attrib.values() +
                        root[i][j].attrib.values() +
                        ["azure"])

xml形式も一度理解してしまえば扱うのも容易ですね。

 

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

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

 

 

Pythonチュートリアル 第3版

Pythonチュートリアル 第3版

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

 

参考

※1 Download Microsoft Azure Datacenter IP Ranges from Official Microsoft Download Center

20.5. xml.etree.ElementTree — ElementTree XML API — Python 3.5.1 ドキュメント

PythonでWeb上のファイルをダウンロードする - Qiita