def __init__(self): self.mem = Memcache() self.base_url = readconfig('base_url') self.cookie = eval(self.mem.getmem('caipiao_pc_login_cookie')) cookie_jar = requests.utils.cookiejar_from_dict(self.cookie, cookiejar=None, overwrite=True) self.session = requests.Session() self.session.cookies = cookie_jar
def __init__(self): self.mem = Memcache()
class InsertMemcache: def __init__(self): self.mem = Memcache() def number_issue(self): lotteryid_list = [51, 52, 53, 54, 200, 201, 202] for lotteryid in lotteryid_list: issue = get_num_issue(lotteryid) key = "issue_{}".format(lotteryid) self.mem.setmem(key, issue) logger(lotteryid, "{}在售期号写入缓存成功".format(lotteryid)) return #处理insert_matchinfo中投注串中针对不同彩种转化 def win_str(self, lotteryid, datatype, win, ins): jclq_match_type = { 'dx_visiting': u'大', 'dx_home': u'小', 'rf_visiting': u'让分主负', 'rf_home': u'让分主胜', 'sf_visiting': u'主负', 'sf_home': u'主胜' } jczq_match_type = { 'sf_home': u'主胜', 'sf_ping': u'平', 'sf_fail': u'主负', 'rq_sf_home': u'让球主胜', 'rq_sf_ping': u'让球平', 'rq_sf_fail': u'让球主负' } if lotteryid in [30, 31, 32, 33, 35]: if lotteryid == 32: tmp_dic = { '0': '1-5', '1': '6-10', '2': '11-15', '3': '16-20', '4': '21-25', '5': '26+' } if datatype.startswith('sfc_visiting'): winteam = '客胜' else: winteam = '主胜' inside_str = tmp_dic.get(datatype[-1]) win = "{winteam}{inside_str}_{win}".format(**locals()) return win winteam = jclq_match_type.get(datatype) else: if lotteryid == 21: winteam = ins elif lotteryid == 2521: if ins == '客不败': ins = '让球主负' elif ins == '主不败': ins = '让球主胜' elif ins == '客胜': ins = '主负' winteam = ins win = "{winteam}_{win}".format(**locals()) return win elif lotteryid in (22, 23): winteam = datatype winteam = jczq_match_type.get(datatype) win = "{winteam}_{win}".format(**locals()) return win def jc_bs4_for_list(self, html, tag, league_info): ''' @html实例,从页面获取的html内容 @tag:从data文件jc_data中根据不同彩种获取不同标签 @league_info:比赛名称,如<周五002> 注:有些彩种的win信息拼接需要拿到ins信息,有些彩种没有ins信息,所以用‘-’代替占位 ''' try: soup = BeautifulSoup(html, 'lxml') tr = soup.find_all("td", class_=tag) li = [] for i in tr: sp = BeautifulSoup(str(i), 'lxml') s = sp.find_all('a') for j in s: if j.get(league_info) and int(j.get('numb')) > 10000: if j.string: #此处无ins信息,使用-占位 tmp = (j.get(league_info), j.get('numb'), j.get('data-odd-type'), j.string, '-') else: win = sp.find('a').find('span').string ins = sp.find('a').find('ins').string tmp = (j.get(league_info), j.get('numb'), j.get('data-odd-type'), win, ins) li.append(tmp) tmp_dict = {} for i in li: _, x, _, _, _ = i tmp_dict[int(x)] = i # 去除重复数据,拿取前2个足够 li = [ x[1] for x in sorted(tmp_dict.items(), key=lambda s: s[0])[:2] ] except Exception, e: logger('bs4', e) return li
class Pcbet(object): def __init__(self): self.mem = Memcache() self.base_url = readconfig('base_url') self.cookie = eval(self.mem.getmem('caipiao_pc_login_cookie')) cookie_jar = requests.utils.cookiejar_from_dict(self.cookie, cookiejar=None, overwrite=True) self.session = requests.Session() self.session.cookies = cookie_jar #requests.utils.add_dict_to_cookiejar(self.session.cookies,self.cookie) def pc_touzhu(self, lotteryid): import urllib #获取投注form表单,pc_bet_data传递的参数详情见data文件中的bet_info if lotteryid > 10000: forms_data = pc_bet_data(lotteryid) print lotteryid print forms_data bet_url = readconfig('num_bet_url') print bet_url else: forms_data = eval( self.mem.getmem("bet_{lotteryid}".format(**locals())).replace( ' ', '')) if lotteryid == 2521: forms_data['lotterytype'] = 'exy' if lotteryid in num_for_lotteryid('jclq'): bet_url = readconfig('jclq_bet_url') elif lotteryid in num_for_lotteryid('jczq'): bet_url = readconfig('jczq_bet_url') #发送投注请求 print bet_url print forms_data s = self.session.post(url=bet_url, data=forms_data).content if eval(s).get('url'): # 获取返回值中的url参数 url = eval(s).get('url') else: logger('投注失败', "投注结果:{}".format(s)) return # 拼接url url = self.base_url + urllib.unquote(url)[1:] # 获取url中的参数信息,以字典形式返回 data_info = url2Dict(url) #记录投注结果 logger( lotteryid, "{}投注成功,orderid:{}".format(data_info.get('lotteryname'), data_info.get('orderid'))) # 请求上一个请求返回的url,跳转支付页面 html = self.session.get(url).content #返回支付页面html及sid,userid等data信息 return html, data_info def pay_cj(self, lotteryid): html, data_info = self.pc_touzhu(lotteryid) soup = BeautifulSoup(html, 'html5lib') sign = [x.get('value') for x in soup.find_all('input', id='ext_sign')][0] url = readconfig('pay_cj') datas = { 'userid': data_info.get('userid'), 'pid': data_info.get('pid'), 'sid': data_info.get('sid'), 'inputrmb': 0, 'inputrmbtp': data_info.get('amount'), 'prebuyid': data_info.get('prebuyid'), 'isdjq': 0, 'djqid': 0, 'isredbag': 0, 'redbagid': 0, 'iswlt': 0, 'istpoint': 0, 'sendtime': 0, 'mobile': readconfig('mobile'), 'orderid': data_info.get('orderid'), 'fangan': 0, 'danbao': 0, 'selfdb': 0, 'fanyong': 5, 'limit_flag': 'true', 'ext_sign': sign, 'inputrmbcf': data_info.get('amount'), 'support_fangan': 1 } info = self.session.post(url=url, data=datas, cookies=self.cookie).json() return info def get_user_info(self): #获取用户信息接口 url = readconfig('get_userinfo') s = self.session.get(url, cookies=self.cookie) info = s.json() return info def _run(self): from data import num_for_lotteryid # for jczq in num_for_lotteryid('jczq'): # self.pc_touzhu(jczq) # for jclq in num_for_lotteryid('jclq'): # self.pc_touzhu(jclq) for i in range(10001, 10029): print "num:{}".format(i) self.pc_touzhu(i)