豆瓣-只看楼主,豆瓣-楼主,[Python]代码#


[Python]代码

# Download douban group topic # Anonymous 2011-12@SZ# config parameterspost_url = "http://www.douban.com/group/topic/23871584/"post_start =0split_prefix = '<li class="clearfix">'poster_user_id = ''page_size = 100save_filename = 'douban-post.txt'log_falg = Truef = open(save_filename,'w')# start import urllib2import sysimport timeprint 'Start ... 'html = urllib2.urlopen(post_url+"?start="+str(post_start)).read()if html.index(split_prefix)<1:    print 'This post has no content: url='+post_url+str(post_start)    sys.exit(0)cc = html.find('topic-content')t_html = ''.join(html[cc:cc+150])poster_user_id = t_html[t_html.index('people')+7: t_html.index('img')-4]c = 0page = 0while True:    page += 1    if log_flag: print '\npage=%d * %d' %(page,page_size)    c = (page-1) * page_size    # posts in current page    posts = html.split(split_prefix)[1:]    for p in posts:        try:            if (p.find('people/')>1):                c += 1                user_id = p[p.index('people/')+7:p.index('/"><img class="pil"')]                if(user_id == poster_user_id):                    ss = '\n['+p[p.index('<h4>')+4:p.index('<h4>')+23] +" ]" +str(c)+"F "+ user_id + " : "+ p[p.index('<p>')+3:p.index('</p>')]                    if log_flag: print ss                    f.write(ss)                    f.flush()        except ValueError:            print '[error] Parse post error'             continue    # next page    post_start += page_size;    html = urllib2.urlopen(post_url+"?start="+str(post_start)).read()    if html.find(split_prefix)<1:        if log_falg: print 'Post is over !'        break    time.sleep(3) # let douban server sleep 3 seconds .f.close()print 'Finished !'

评论关闭