ガールフレンド(仮)速報では、女の子たちのプロフィールと顔写真がまとまっている。ここからhtmlを取得してプロフィールデータをパースするという流れて、wgetを使おうと思ったらjavascriptが云々言われたので、デスクトップ自動化でゴリ押しする。
ubuntu OSでPython使いならxautomationを使おう。
# Pythonで import os import time import sys try: import pygtk pygtk.require("2.0") except: pass try: import gtk import gtk.glade except: sys.exit(1) url = "http://girlfriend-kari.jp/schoolroster/girl.html?girlID=" id = ["0"*(3-len(str(i))) + str(i) for i in range(1, 120)] # GFのID def xte_python(url, id, interval): pages = map(lambda x: "xte " + '"' + 'str ' + str(url + x) + '"', id) os.system("xte 'mousemove 160 400'") os.system("xte 'mouseclick 1'") time.sleep(1) cmds = ["xte 'keydown Alt_L'", "xte 'key D'", "xte 'keyup Alt_L'", "xte 'keydown Control_L'", "xte 'key S'", "xte 'keyup Control_L'", "xte 'key Return'"] for p in range(len(pages)): for i in [0, 1, 2]: # html入力にカーソル合わせる。 os.system(cmds[i]) time.sleep(1) # ここを詰め過ぎると、メインメニューに戻ってしまう。 os.system(pages[p]) # 入力する。 time.sleep(1) os.system("xte 'key Return'") # エンターする。 time.sleep(1) for i in [3, 4, 5, 6]: # 保存する。 os.system(cmds[i]) time.sleep(1) # ここを詰め過ぎると、メインメニューに戻ってしまう。 time.sleep(interval)
xte_python(url, id, 1)
これで取得したhtmlファイルをPythonとか正規表現とか使ってゴリ押しして加工する。
# html perse wd = "/girlfriend/" # データが入っているディレクトリ girls = os.listdir(wd) w0 = open("/girlfrienddata.txt", "w") # 出力 import re re0 = re.compile("].*?<") # プロフィールの正規表現 re1 = re.compile("<title>.*?|") # ガールフレンドの名前を取得するところ for j in range(len(girls)): g0 = open(wd + girls[j], "rU") for i in range(107): tmp = g0.readline() if i == 1: girlid = tmp.split("girlID=")[1].split(" --")[0] elif i == 14: name0 = re1.search(tmp).group()[7:-3] # マルチバイト文字のせいでなんかおかしい。 name = name0.decode("utf-8") tmp1 = tmp.decode("utf-8").rstrip().split("</div></div>")[0].split("spec1")[1] grade = tmp1.split("</p>")[0].split(">")[1].split("<br")[0] club = tmp1.split("</p>")[0].split(">")[2] tmp2 = re0.findall(tmp1) res = [girlid]+[name]+[grade]+[club]+map(lambda x: x[1:-1], tmp2) w0.write("\t".join(res)+"\n") w0.close()
この段階で、スリーサイズがBWH連結したままだったりするがあとはRとかでstrsplitしてゴリ押しして整形する。