def test_exist_key(): db = WeiboDB(); # 构造知识词条字典 abr_list = db.select("SELECT abrid, kl FROM `abbreviation`"); for abr in abr_list: GV.dict_klg[abr[1].lower()] = abr[0]; weibo_list = db.select("SELECT mc FROM weibomsg"); #weibomsg = 'fusion io的iops已经过百万了,在wikipedia排名第一 //@TRS肖诗斌: 昨天测试了华为二代SSD,4K随机读,IOPS超过13W,吞吐量超过800M,已经大大超过fusionio卡, 还有性能更优越的华为三代SSD年底就要发布。这些证明只要专注和努力,国人同样可以作出好东西。其实SSD最好的是OCZ,读写达到1.4G/s, 华 HelloDBA出品:《Fusionio性能测试与瓶颈分析》,http://t.cn/a9Ts2j,如果你懒得看测试数据,直接看结论吧。'; for weibomsg in weibo_list: key_list = utility.exist_key(weibomsg[0]); if( len(key_list) > 0 ): print weibomsg[0]; for id in key_list: for key in GV.dict_klg.keys(): if(id == GV.dict_klg[key]): print key; raw_input();
def init(): # 配置日志 # '[%(asctime)s]-%(levelname)s : %(message)s' logging.basicConfig(filename='weibo.log',filemode='a',format='[%(asctime)s] - %(module)s.%(funcName)s.%(lineno)d - %(levelname)s - %(message)s',level=logging.DEBUG) # 进行模拟登录 filename = './config/account'#保存微博账号的用户名和密码,第一行为用户名,第二行为密码 WBLogin = weiboLogin.weiboLogin() if WBLogin.login(filename)==1: print 'Login success!' else: print 'Login error!' exit() db = WeiboDB(); # 构造知识词条字典 abr_list = db.select("SELECT abrid, kl FROM `abbreviation`"); for abr in abr_list: GV.dict_klg[abr[1]] = abr[0]; #for abr in dict_klg.keys(): # print abr + ' ' + str(dict_klg[abr]); # 生成任务 dict_user = {}; user_list = db.select("SELECT uid, fui FROM `userlist`"); for item in user_list: dict_user[item[0]] = 1; uid_list = item[1].strip("'").split("','"); for uid in uid_list: dict_user[uid] = 1; for uid in dict_user.keys(): GV.task_list.put(uid); #task_list.put('715545693'); #task_list.put('1069205631'); #task_list.put('1649173367'); # 开始执行任务 controller();
def __init__(self): self.wbdb = WeiboDB()
class WeiboMsg: def __init__(self): self.wbdb = WeiboDB() # 获取用户信息前的初始化 def init_user(self, uid=None): self.weibomsg = { #'uid':'', #用户的id 'un': '', #用户用户名 'iu': '', #用户头像URL 'mid': '', #消息id 'mc': '', #消息内容 'nc': '', #消息中@的用户 'run': '', #转发的消息的用户名 'rmc': '', #转发的消息的内容 'pu': '', #消息中的图片 'rrc': '', #转发的消息的转发次数 'rcc': '', #转发的消息的评论次数 'rpage': '', #转发的消息的微博页面 'rpt': '', #转发的消息的发布时间 'rc': '0', #消息的转发次数 'cc': '0', #消息的评论次数 'srn': '', #消息来源 'page': '', #消息的微博页面 'pt': '' #消息的发布时间 } self.flag = 0 # 标记是否第一条记录,因为csv文件要在第一条记录前写标签 self.flag_un = 0 # 标记是否已经获得用户名 self.uid = uid # 处理一个分页的微博数据,需要继续处理返回True,停止处理返回False def get_content(self, content): self.content = content #self.weibomsg['uid'] = str(self.uid) #后加的用户id self.pos = 0 if self.flag_un == 0: self.get_weiboun() self.get_weiboiu() self.flag_un = 1 while self.pos >= 0: # 每次应该初始化一下 self.init_weibo() try: self.get_weibomid() except Exception, e: logging.exception('%s get_weibomid: ' + str(e), self.uid) continue if (self.wbdb.is_stop(self.weibomsg['mid'])): return False if self.pos == -1: break try: self.get_weibomc() except Exception, e: logging.exception('%s get_weibomc: ' + str(e), self.uid) continue try: self.get_retweet_info() except Exception, e: logging.exception('%s get_retweet_info: ' + str(e), self.uid) continue