mechanizeを使ってmixiに日記を書くサンプル
最近、仕事が手につかないbonlifeです。(まぁ、最近に限ったことではないんですけどね。)
近頃はもっぱらPythonです。「Dive Into Python」の記事もようやく「7. Regular Expressions」まで読み終わりました。(遅っ。)
ということで、Pythonのmechanizeを使って、役に立たないツールを作ってみましたよ。ただただ、mixiに日記を書くサンプルです。これを発展させて、Webインターフェースも作って、会社からmixiを使えるようにするのが目標です!
- MixiBrowser.py
#!/usr/bin/env python # -*- coding: utf-8 -*- import mechanize class MixiBrowser(mechanize.Browser): def __init__(self): self.logined = False mechanize.Browser.__init__(self) def login(self, email, password): """login mixi!""" try: self.open('http://mixi.jp/') self.set_handle_robots(False) self.select_form(nr=0) self["email"] = email self["password"] = password self.submit() if self.geturl() == 'http://mixi.jp/home.pl': self.logined = True return True else: return False except: return False def add_diary(self, diary_title, diary_body): """Write a mixi diary.""" try: self.follow_link(url="http://mixi.jp/list_diary.pl") self.select_form(nr=0) self.submit() self.select_form(nr=0) self["diary_title"] = diary_title.encode(self.encoding()) self["diary_body"] = diary_body.encode(self.encoding()) self.submit() self.select_form(nr=0) self.submit() return True except: return False
exceptの処理はちょっと…とか気になる部分はありますが、動くものを作るのがやる気を保つのには必要なので、細かい点は気にしない方向で。これに機能をデフデフ追加したいところ。今後は表示内容の取得などがメインになると思うので、HTMLのパースが必要ですね。「Dive Into Python」の「8. HTML Processing」を読んでからチャレンジしてみます。
とりあえず、以下のようにして、日記を書くことができました。うわぁい。
- mixi_diary_post_sample.py
#!/usr/bin/env python # -*- coding: utf-8 -*- import MixiBrowser() email = 'foo@bar.com' password = 'hoge' mixi = MixiBrowser.MixiBrowser() if mixi.login(email,password) == True: print mixi.add_diary(u'タイトルだにょだにょ', u'本文だにょだにょ\n2行目だにょだにょ')
ちなみに、昨日、また2冊本を買ってしまいました。なんだかすごいWindows(というよりMicrosoft)っ子みたいじゃないの、これ。通勤途中に細々と読んでみます。
IronPythonの世界 (Windows Script Programming)
- 作者: 荒井省三
- 出版社/メーカー: ソフトバンク クリエイティブ
- 発売日: 2007/03/28
- メディア: 単行本
- 購入: 4人 クリック: 31回
- この商品を含むブログ (21件) を見る
Windows PowerShell宣言! (Windows Script Programming)
- 作者: 吉岡洋
- 出版社/メーカー: ソフトバンク クリエイティブ
- 発売日: 2007/03/28
- メディア: 単行本
- クリック: 48回
- この商品を含むブログ (33件) を見る