2011-06-04
■[python][テキストマイニング] はてなダイアリーからコーパスとなるテキストデータを収集する
はてなダイアリーの更新順ダイアリー一覧からアドレスを取得してブログを巡回するプログラム
一度取得したサイトは、取得した日に再び更新されないようにしてあります。
#!/usr/bin/python # coding: UTF-8 import sys,lxml.html,re,urllib2,time,os,re reload(sys) sys.setdefaultencoding('utf-8') def keta(x,num): y = str(x) if not len(y) == num: return keta('0' + y,num) else: return y def gethtml(url): ls = os.listdir(".") #hatenadiary = name + "_" + date name = url.split("/") hatenadiary = "".join(name[3:]) if hatenadiary in ls: print url,"は既に取得しています。" return 0 print url fp = urllib2.urlopen(url) html = fp.read() fp.close() return html def savehtml(html,url): txt = lxml.html.fromstring(html) txt = txt.text_content() name = url.split("/") hatenadiary = "".join(name[3:]) f = open(hatenadiary + ".txt",'w') f.write(txt) f.close() return txt def linkserch(html): #links = re.findall(r'href=".+?"|href=\'.+?\'', html) links = re.findall(r'href="/[A-Za-z0-9_-]+?/[0-9]+?/*[0-9]*?"', html) links = ["http://d.hatena.ne.jp/" + w[7:-1] for w in list(set(links)) if not ("#" or "%" or "?") in w] return links os.chdir("corpus") url = "http://d.hatena.ne.jp/changes.xml" if "changes.xml" in os.listdir("."): os.remove("changes.xml") os.system("wget " + url) f = open("changes.xml") text = f.read() f.close() localtime = time.localtime() date = keta(localtime.tm_year,4) + keta(localtime.tm_mon,2) + keta(localtime.tm_mday,2) links = re.findall(r'http.*/"',text) links = [w[:-1] for w in links] for w in links: for x in linkserch(gethtml(w)): html = gethtml(x) if not html == 0: savehtml(html,x)
トラックバック - http://d.hatena.ne.jp/gepuro/20110604/1307145290
リンク元
- 22 http://static.slidesharecdn.com/swf/ssplayer2.swf
- 18 http://d.hatena.ne.jp/nokuno/20110604/1307178783
- 17 http://twitter.com/
- 8 http://www.slideshare.net/slideshow/embed_code/8203771
- 7 http://reader.livedoor.com/reader/
- 6 http://d.hatena.ne.jp/nokuno/
- 4 http://fastladder.com/reader/
- 4 http://www.google.co.jp/url?sa=t&source=web&cd=1&ved=0CBkQFjAA&url=http://d.hatena.ne.jp/gepuro/20110604/1307146938&rct=j&q=2ch urlopen&ei=0bfrTZTNH4WmuQPymuW8Dw&usg=AFQjCNF_Y5hN7-pACVnK7vaLVGObYH3Aiw
- 4 http://www.slideshare.net/gepuro/collecting-corpus-8203771
- 3 http://search.hatena.ne.jp/search?word=日本語テキスト&site=d.hatena.ne.jp
