- 2009-01-07 (水) 23:12
- Beautifulsoup | python | twitter
@ITで連載中の4コマ漫画がんばれ! アドミンくんは、システム管理者のありがちネタをユーモラスに描いており、とっても面白く、一服の清涼剤という感じで、第一話から欠かさず読んでいます。
今回、がんばれ! アドミンくんの新着を見逃さないように、新着情報を知らせるTwitterBotを作成しました。
http://twitter.com/ad_min_kun
アカウントがadmin_kunでなく、ad_min_kunと細切れになっているのは、下のようにadminという文字は使えないようなので。

がんばれ!アドミンくん はRSSを吐き出していない為(YahooPipes等の外部サービスでRSS化しているものは見かけます)、スクレイピングで対応しました。例によってコードを晒します。
Python2.4と2.5で動作確認をしています。スクレイピングにBeautifulSoupを、Twitter投稿にpython-twitter(依存関係でsimplejsonも必要)を使用しています。
# coding: utf-8
import urllib2
from twitter import Api as TwitterApi
from BeautifulSoup import BeautifulSoup
def file_open(f):
r = open(f,'r')
latest_number = r.readline()
r.close()
return latest_number
def parse_html(u):
soup = BeautifulSoup(urllib2.urlopen(u))
data = []
for node in soup.findAll('td', {'colspan': '3'}):
for tag in node('table', {'width': '100%', 'cellpadding': '3', 'border': '0'}):
for atag in tag('a'):
data.append([atag['href'], atag.string])
data.reverse()
return data
def main(data, latest_number):
for i in data:
entry_link, entry_title = i[0], i[1]
e = entry_link.split('/')
entry_number = e[4]
if latest_number < entry_number:
api = TwitterApi(TWITTER_USERNAME, TWITTER_PASSWORD)
post = u'%s %s%s' % (entry_title, DOMAIN, entry_link)
api.PostUpdate(post)
latest_number = entry_number
return latest_number
def file_close(f, l):
w = open(f, 'w')
w.write(str(l))
w.close()
if __name__ == '__main__':
FILE = 'adminkun_status.txt'
TWITTER_USERNAME = 'TWITTER_ACCOUNT'
TWITTER_PASSWORD = 'PASSWORD'
URL = 'http://www.atmarkit.co.jp/fwin2k/itpropower/admin-kun/index/index.html'
DOMAIN = 'http://www.atmarkit.co.jp'
latest_number = file_open(FILE)
data = parse_html(URL)
latest_number = main(data, latest_number)
file_close(FILE, latest_number)
実は前回のBotはこれの副産物でした。自分にとってTwitterは、すっかり情報ハブになっているので、有益になりうるTwitterBot候補があれば、ちょくちょく作っていこうかと思います。
Comments:4
- doya 09-01-15 (木) 21:48
-
この漫画初めて知りましたー。連載数がすごいですねw
- aoshiman 09-01-15 (木) 21:57
-
コメントありがとうございます。私がこういう仕事やりはじめてからすぐに連載が始まって
よく読んでいた思い出があります。アドミンくんと一緒に成長?しているつもりですw - naokits 09-08-18 (火) 23:14
-
こんにちは。こちらなにわ電機 総務課のBOT希望しますw。あと、相談したい事があるので、Twitterの「naokits」をfollowしておいていただけないでしょうか?
- aoshiman 09-08-19 (水) 21:24
-
コメントありがとうございます!@naokitsをfollowしました。
Trackbacks:0
- Trackback URL for this entry
- http://aoshiman.net/weblog/2009/01/07/adminkun-twitter/trackback/
- Listed below are links to weblogs that reference
- がんばれ! アドミンくん の新作情報を知らせるTwitterBotを作った from “南船北馬”
