PythonでExcelやWordを起動し、少し弄くり、保存して閉じるという作業をやってみた。Excelのほうは問題なさそうだが、Wordのほうが少し厄介そう。カーソルの指定方法がイマイチよくわからん。とりあえずこの二つに関してはVBAで作業したほうが簡単そうだし、あまりpythonでやる意味を見出せなかった。

これとは別に意外とハマりそうだったのがwin32com×Internet Explorer。
前からデータベース作成のネタ集めをしたいと思っていたので、各サイトIEのソースコードから、使えそうなキーワード&情報を持ってこれないかと思案開始。

とりあえずTkにアドレスを入れればそのサイトのHTMLを取得しtxtで吐き出す、ていうようなスクリプトはできた。

問題が1点。
・吐き出されたtxtからどうやって必要な情報だけを抽出しようか

さらに発展させた改良点が1点
・Tkのエントリーに複数のURLを渡し、並列処理できないものか→Tkの別ガジェットを使用するか、もしくはtxtデータを渡して、読み込ませるか

とりあえず今日はココまで。

##############本日のコード#################
from Tkinter import *
import Tkinter as Tk
from time import sleep
import win32com.client

class Frame(Tk.Frame):
def __init__(self, master=None):
Tk.Frame.__init__(self, master)
self.master.title(u'Get my URLs')

self.defaulturl = Tk.StringVar()
self.defaulturl.set('')

fr = Tk.LabelFrame(self)
fr.grid(row=0, column=0, columnspan=1, padx=5, pady=5)

lab = Tk.Label(fr, text = u'URL Please >')
entbx = Tk.Entry(fr, width=100, textvariable = self.defaulturl)
enterButton = Tk.Button(fr, width=7, text=u'Enter', command = self.getvals)

lab.pack(side=Tk.LEFT)
entbx.pack(side=Tk.LEFT)
enterButton.pack(side=Tk.LEFT)


def getvals(self):
vals = self.defaulturl.get()
global urls
urls = []
urls.append(vals)

self.quit()

if __name__ == '__main__':
f = Frame()
f.pack()
f.mainloop()


def iehack_html(address):
ie=win32com.client.Dispatch('InternetExplorer.Application')
ie.Visible=1
ie.Navigate('%s'%address)
global flnam
flnam = address

if ie.Busy:
sleep(5)

global html
html = ie.Document.body.innerHTML
html = unicode(html)
html = html.encode('ascii','ignore')
ie.Quit()


iehack_html(urls[0])

#strオブジェクトの指定範囲を取り出す場合、val[a:b]のbはbの"一つ前の"文字まで取り出すという意味→数え方が紛らわしいので注意
if flnam[0:3] == 'www':
strObj = flnam[4:]
cnt = strObj.find('.')
fl = open('HTML_%s.txt'%strObj[0:cnt], 'w')
elif flnam[0:5] == 'http:' and flnam[7:10] == 'www':
strObj = flnam[11:]
cnt = strObj.find('.')
fl = open('HTML_%s.txt'%strObj[0:cnt], 'w')
elif flnam[0:5] == 'http:' and flnam[7:10] != 'www':
strObj = flnam[7:]
cnt = strObj.find('.')
fl = open('HTML_%s.txt'%strObj[0:cnt], 'w')
else:
cnt = flnam.find('.')
fl = open('HTML_%s.txt'%flnam[0:cnt], 'w')


fl.write(html)
fl.close()