3
2

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.

pythonでグローバルIPを記録する

Last updated at Posted at 2016-07-19

#ちょっとだけ説明

  • Requestsでページを取得
  • HTMLParserモジュールでIPを取得
  • codecsモジュールでファイルの読み書き

#コード
下記はここで取得する例となります。

ip.py
#!/usr/bin/env python

import requests
from HTMLParser import HTMLParser
import codecs

class MYHTMLParser(HTMLParser): #HTMLParserクラスをオーバーライドしてます
        def __init__(self): #初期化
                HTMLParser.__init__(self)
                self.mytag = ''

        def handle_starttag(self,tag, attrs): #タグの始めに読むと呼ばれるハンドラ
                if tag == 'p': #タグの判別
                        if (dict(attrs).get('name')=="ip"): #属性の判別
                                self.mytag = 'ip'

        def handle_data(self,data): #データを読むと呼ばれるハンドラ
                if self.mytag == 'ip': #属性の判別
                        self.mytag = '' #ここでフラグの初期化
                        print 'IP='+data
                        with codecs.open('my_ip.txt','w','utf-8') as f:
                                f.write(data)


def ip_get(myurl): #メインの処理
        r = requests.get(myurl)
        r.encoding = r.apparent_encoding #そのままでは処理出来なかったのでエンコード

        with codecs.open('my_ip.html','w','utf-8') as f:
                f.write(r.text)
                f.flush() #念の為ですが、追加しました。

        with codecs.open('my_ip.html','r','utf-8') as f:
                parser = MYHTMLParser()
                parser.feed(f.read())
                parser.close()


if __name__ == '__main__':
        ip_get("http://www.axisnetworks.biz/tools/gip/")

取得したページは`my_ip.html`に保存され、IPは`my_ip.txt`に保存されます。
エンコードの処理は悩んだ結果です。。。

3
2
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
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?