読者です 読者をやめる 読者になる 読者になる

The jonki

呼ばれて飛び出てじょじょじょじょーんき

Pythonで書く Twitter 名言ボット

TwitterAPIのライブラリを使って名言サイトから名言を取り出して発言します。
こんな感じ。



拝借させて頂いた名言サイト。
実は昔のアルバイト先で顔見知りだったりします。(向こうは憶えてないかもしれませんが)

名言集.com
http://www.meigensyu.com/

HTMLを見てみると、以下のようにすれば名言とその著者をとることができるのが分かります。
.meigenboxを取得。
.textが名言本文、.link->.aが著者となってます。

<div class="text">頭で理解できることに価値はない。</div> 
<div class="link"><ul><li>出典:<a href="/sources/view/1183/page1.html">マンハッタン</a></li><li><a href="/quotations/view/1699.html">[詳細]</a></li></ul></div> 

全体のソースをうp。実際はこれをcronで動かしてます。

#!/usr/bin/python
#-*- coding: utf-8 -*-

#@author Junki OHMURA
#@date 2009/11/09

import urllib2
from BeautifulSoup import *
import re
import random
import twitter

url = "http://www.meigensyu.com/quotations/index/random"

def getMaxim(_url):

        html = urllib2.urlopen(_url).read()
        soup = BeautifulSoup(html)

        # meigenboxごとに1名言
        categoryBoxes = soup.findAll(attrs={'class' : 'meigenbox'})
        _msges = []
        for box in categoryBoxes:
        
                # 著者
                linkObj = box.find(attrs={'class' : 'link'})#.findAll('li')
                author = linkObj.find('a',href=re.compile('author'))
                if(author != None):
                        author = author.string
                else: # 著者のないものはスルー
                        continue
        
                # 名言本文
                maxim = box.find(attrs={'class' : 'text'}).string
                if(maxim == None):
                        continue
                
                msg = maxim + " [" + author + "]"
                msges.append(msg)
                #print msg

        return _msges

msges = getMaxim(url)

print msges[0]

tapi = twitter.Api(username='ユーザ名', password='パスワード')
status = tapi.PostUpdate(msges[0])

TwitterCounterで調べると結構伸びてるみたい。みんな名言とか好きね(・∀・)