#ちょっとだけ説明
- 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`
に保存されます。
エンコードの処理は悩んだ結果です。。。