def is_have_ticket(self, train_list): """是否有票""" # 二等座剩余数 have_ticket_xpath = '//tbody[@id="queryLeftTable"]/tr/td[4]' have_ticket_list = ele_utils.get_include_hide_elements_for_wait( self.driver, By.XPATH, have_ticket_xpath, timeout=1) if not have_ticket_list: return False # 无座剩余数 no_seat_xpath = '//tbody[@id="queryLeftTable"]/tr/td[11]' no_seat_list = ele_utils.get_include_hide_elements_for_wait( self.driver, By.XPATH, no_seat_xpath, timeout=1) if not no_seat_list: return False # 所有预订的按钮 book_list_xpath = '//tbody[@id="queryLeftTable"]/tr/td[13]' book_list = ele_utils.get_include_hide_elements_for_wait( self.driver, By.XPATH, book_list_xpath) if not book_list: return False # 获取所有的车次号 train_num_list_xpath = '//tbody[@id="queryLeftTable"]/tr/td/div/div/div/a' train_num_list = ele_utils.get_include_hide_elements_for_wait( self.driver, By.XPATH, train_num_list_xpath) if not train_num_list: return False total_train = len(train_num_list) if (total_train != len(have_ticket_list)) and (total_train != len(book_list)): return False for t in range(total_train): train_name = train_num_list[t].text # print(train_name) if train_name in train_list: remainder_ticket = have_ticket_list[t].text # print(remainder_ticket) if remainder_ticket == '有': book_list[t].click() return True if remainder_ticket.isdigit(): if int(remainder_ticket) > 0: book_list[t].click() return True no_seat_remainder = no_seat_list[t].text if no_seat_remainder == '有': book_list[t].click() return True if no_seat_remainder.isdigit(): if int(no_seat_remainder) > 0: print("book_list_count:", len(book_list)) print("t:", t) book_list[t].click() return True
def choose_date(self, day, is_left=True): """日期选择""" train_date_xpath = '//input[@id="train_date"]' train_date = ele_utils.get_include_hide_element_for_wait( self.driver, By.XPATH, train_date_xpath) if not train_date: return False time.sleep(2) train_date.click() if is_left == True: # 左边日期 dates_xpath = '//div[@class="cal"]/div[2]/div[@class="cell"]/div' else: # 右边日期 dates_xpath = '//div[@class="cal cal-right"]/div[2]/div[@class="cell"]/div' date_ele_list = ele_utils.get_include_hide_elements_for_wait( self.driver, By.XPATH, dates_xpath) if not date_ele_list: return False time.sleep(2) for date_ele in date_ele_list: # print(date_ele.text) if date_ele.text == day: date_ele.click() break return True
def get_text_ele_list(self, texts_xpath, timeout=3): """ :param texts_xpath: 文本xpath :param timeout: 请求超时 """ text_ele_list = ele_utils.get_include_hide_elements_for_wait( self.driver, By.XPATH, texts_xpath, timeout=timeout) if not text_ele_list: return None return text_ele_list
def operate_event(self, data, bet_stake): ''' 找盘口,并打开 ''' print '-------------operate_event----------' event_teams_xpath = '//span[@class="c-events__teams"]' while True: event_teams_ele_list = ele_utils.get_include_hide_elements_for_wait(self._driver,\ By.XPATH, event_teams_xpath, 20) if not event_teams_ele_list: return False for event_team_ele in event_teams_ele_list: teams = event_team_ele.get_attribute('title').strip() if (not teams) and (self.event_team_split in teams): return False home, away = teams.split(self.event_team_split) home_data = data.get('home', '') away_data = data.get('away', '') # 去掉(younth) delete_str = ' (youth)' replace_str = '' if (delete_str in home_data) and (delete_str in away_data): home_data = home_data.replace(delete_str, replace_str) away_data = away_data.replace(delete_str, replace_str) home_fuzzy_res = fuzz.ratio(home, home_data) away_fuzzy_res = fuzz.ratio(away, away_data) if (home_fuzzy_res >= 80) or (away_fuzzy_res >= 80): event_team_ele.click() break break href_num = 1 while True: if href_num > 9: return False current_href = self._driver.current_url if current_href != self._init_url: break time.sleep(1) href_num += 1 # 选择展示样式(单列) if not self.single_column(): return False # 选择时间 period = data.get('period', '') if period in mybooks.period_list: if not self.choose_period(period): return False if period == '1st quarter': period_kw = '. 1 Half ' elif period == '2nd quarter': period_kw = '. 2 Half ' else: return False else: period_kw = '' bet_name = data.get('bet_name', '') bet_value = data.get('bet_value', '0') if (bet_name in mybooks.bet_1x2_list) or (bet_name in\ mybooks.bet_double_1x2_list): if not self.operate_1x2(bet_name, home, away, period_kw): return False elif bet_name in mybooks.bet_ou_list: if not self.operate_ou(bet_name, bet_value, period_kw): return False elif bet_name in mybooks.bet_ah_list: if not self.operate_ah(bet_name, bet_value, home, away, period_kw): return False else: return False koef = data.get('koef', '0') if not self.to_do_bet(koef, bet_stake): print '投注失败!' return False return True