gepuroの日記

2011-06-04

[][] はてなダイアリーからコーパスとなるテキストデータを収集する


はてなダイアリーの更新順ダイアリー一覧からアドレスを取得してブログを巡回するプログラム
一度取得したサイトは、取得した日に再び更新されないようにしてあります。

#!/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)

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証