今日1日の発言をメールで送ってくれるスクリプト2
こんにちは。せっかくノリで書いてみたけど、今の所使うという人がいなくてしょんぼりなしょうゆです。
それはともかく、昨日(http://d.hatena.ne.jp/showyou/20080224#1203866547)の続きの話。
メールは先日貼ったhttp://labs.unoh.net/2007/06/python_2.htmlそのまんまです。強いていうなら文字コードでエラーが出てたので無理やりu'てすと'.encode('iso-2202-jp')なんてやりました。
Twitterのログ取得部分ですが、これはちょっと苦労しました。
現在、TwitterのAPIで過去複数ページが取得できないんですよ。
なので、Webページから直接さらっちゃいました。
def getUserPageWithScraping(self,user,num): self.setAuthHandler() s = "http://twitter.com/"+user+"?page="+str(num) print "url+" +s data = urllib2.urlopen(s) urlstring = data.read() if num == 1: return self.scrapeTwit(urlstring,True) else: return self.scrapeTwit(urlstring,False) # HTMLをスクレイプします。 def scrapeTwit(self,a,isFirst): import re # <span class="entry-title entry-content">~</span>(最短) #reg = re.compile(r'<(.*?)>') retList = [] reg = re.compile("<span class=\"entry-title entry-content\">([\w\W]*?)</span>[\w\W]*?<abbr class=\"published\" title=\"([\w\W]*?)\">.*?</abbr>",re.MULTILINE) reg2 = re.compile("<p class=\"entry-title entry-content\">([\w\W]*?)</p>[\w\W]*?<abbr class=\"published\" title=\"([\w\W]*?)\">.*?</abbr>",re.MULTILINE) # もし1ページ目なら、最新の発言も取ってくる if isFirst : a3 = reg2.findall(a) retList.append( a3[0] ) a2 = reg.findall(a) for aa in a2: retList.append( (aa[0].strip(),aa[1]) ) return retList
いやー、正規表現が苦労しました。(.*?)でいけるかと思ったら、改行を認識しなくて。。思わず[\w\W]なんてやってしまいました。酷すぎですね。
実際に取得すると少し時間かかります。正規表現とログ取得のどっちが負担かけてるのか知りませんが。あんまり使わない方がいいんでしょうねぇ。
あと、↑のコメント見ればわかりますが、実は最新の発言が取れません。アレだけ実は
<p class=""></p>
ってなってるのです。今日はその辺修正予定。修正しました。
で、だれか使う人いない?いなければ勝手にメール送りつけるよ?(ぉぃ