- 2008-09-30 (火) 23:21
- Gmail | feedparser | python | smtplib | urllib
今の私にとって(他の人もそうだと思いますが)、仕事プライベートに関係なく、Google検索は無くてはならないものですが、はたして1日にどのくらい検索しているのか知りたくて、リストを作成してみました。併せて前回のYahoo!天気情報のRSSと同様にGmailで送信しています。役に立つか分かりませんが、作成したコードを掲載します(スクリプトは何度も実行して成功しているものですが、実施は自己責任でお願いします)。尚、Google検索の履歴(Google Search History)はGoogleアカウントでログインしている状態で有効になります。
作成した時のポイントとしては
- Google Search History は RSS で取得出来るので、feedparserを利用した
- RSS は Basic認証がかかる為、urllibのFancyURLopenerを使用した
- RSSのURLは件数のパラメータ(&num=)が無い場合、25件しか取得出来ないようなので(自分調べ)、1日で必要な件数を設定した
- 取得出来る日時がGMTなので、日本時間(+9h)にする方法に悩んだ
# coding:utf-8
import urllib
import feedparser
import email.Utils
from time import *
import smtplib
from email.MIMEText import MIMEText
from email.Header import Header
from email.Utils import formatdate
class MyURLopener(urllib.FancyURLopener):
def prompt_user_passwd(self, host, realm):
return ('YOUR_GMAIL_ADDRESS', 'YOUR_PASSWORD')
def feed_parse(u):
f = opener.open(u)
d = feedparser.parse(f)
TEMPLATE = '* %(entry_date)s : %(entry_title)s'
feed = []
for entry in d.entries:
feed.append([entry.date, entry.title])
feed.reverse()
item_list = []
today = localtime(time())[0:3]
for i in feed:
entry_date, entry_title = i[0], i[1]
entry_date = localtime(mktime(email.Utils.parsedate(entry_date)) + 32400)
if entry_date[0:3] == today:
entry_date = strftime('%Y/%m/%d %H:%M:%S',entry_date)
item_list.append(TEMPLATE % locals())
items = '\n'.join(item_list)
return items
def create_message(from_addr, to_addr, subject, body, encoding):
msg = MIMEText(body.encode(encoding), 'plain', encoding)
msg['Subject'] = Header(subject, encoding)
msg['From'] = from_addr
msg['To'] = to_addr
msg['Date'] = formatdate()
return msg
def send_via_gmail(from_addr, to_addr, msg):
s = smtplib.SMTP('smtp.gmail.com', 587)
s.ehlo()
s.starttls()
s.ehlo()
s.login('YOUR_GMAIL_ADDRESS', 'YOUR_PASSWORD')
s.sendmail(from_addr, to_addr, msg.as_string())
s.close()
if __name__ == '__main__':
number = '200'
URL = 'http://www.google.com/searchhistory/?output=rss&num=%s' % number
opener = MyURLopener({})
subject = 'Google search history'
body = feed_parse(URL)
from_addr = 'YOUR_GMAIL_ADDRESS'
to_addr = 'xxxxxxxxxxxxx@gmail.com'
msg = create_message(from_addr, to_addr, subject, body, 'UTF-8')
send_via_gmail(from_addr, to_addr, msg)
実際に送ってみるとこんなかんじです。これは一部分で、調べものが多いときは100件以上/日は検索していました。

少しとはいえ、自分の検索を晒すのは恥ずかしい><。Typoとか(笑。
これを応用すれば、twitterで検索履歴をポストすることも出来そう。とっても恥ずかしいけどね。
参考サイト
Comments:0
Trackbacks:0
- Trackback URL for this entry
- http://aoshiman.net/weblog/2008/09/30/google_search_history/trackback/
- Listed below are links to weblogs that reference
- Pythonで1日のGoogle検索履歴の一覧を作成してGmailから送信する from “南船北馬”
