diff --git a/car_info.db b/car_info.db index c39b527..68d66fc 100644 Binary files a/car_info.db and b/car_info.db differ diff --git a/ewcc2.py b/ewcc2.py index 6082184..d7bf2a0 100644 --- a/ewcc2.py +++ b/ewcc2.py @@ -1,3 +1,4 @@ +from tkinter import N from DrissionPage._base.chromium import Chromium from DrissionPage._configs.chromium_options import ChromiumOptions from DrissionPage._pages.mix_tab import MixTab @@ -12,8 +13,10 @@ class Sinopec_ewcc(object): self.url_info= 'ewcc.sinopec' self.browser_path= r'C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe' self.co = ChromiumOptions().set_browser_path(self.browser_path) + self.co.headless(True) self.co.ignore_certificate_errors(True) self.browser=Chromium(self.co) + self.tab=self.browser.latest_tab def quit(self ): self.browser.quit() @@ -88,33 +91,41 @@ class Sinopec_ewcc(object): def find_tab(self,url=None,title=None): + find_tab=None if url is None: url=self.url if title is None: title=self.url_info try: - self.tab= self.browser.get_tab(url=url) + find_tab = self.browser.get_tab(url=url) print("根据 url 找到标签") except: print("根据 url 没有找到标签") - self.tab=None - if not self.tab: + if not find_tab: try: - self.tab=self.browser.get_tab(title=title) + find_tab=self.browser.get_tab(title=title) print("根据 标题名 找到 标签") except : print("根据 标题名 没有找到标签") - self.tab=None + find_tab=None - return self.tab + return find_tab def is_login(self): if self.tab is None: return False time.sleep(2) cur_login=False + ### 判断是否有仍然发生的界面 + try: + ele_process = self.tab.ele('#proceed-button') + ele_process.click() + time.sleep(3) + except Exception as e: + print(e) + try: e=None e=self.tab.ele("#userName") @@ -159,13 +170,23 @@ class Sinopec_ewcc(object): def Autologin(self,username=None,userpass=None,otp=None,cookies=None): # 1 查找现有的标签 print('<1> 查找 现有的标签') - self.find_tab() # 新增:查找标签页 + if self.find_tab(): # 新增:查找标签页 + print("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") # 2 如果没有登录 ,则使用cookie登录 if not self.is_login(): print('<2> 找不到对应的网站,使用cookies尝试登录') self.init_cookies(cookies) - self.new_tab() + self.tab.get(self.url) + self.tab.refresh() + time.sleep(3) + ### 判断是否有仍然发生的界面 + try: + ele_process = self.tab.ele('#proceed-button') + print("**********************************") + ele_process.click() + except Exception as e: + print(e) # 3 判断是否登录,如果登录不成功,则使用帐号和密码登录 if not self.is_login(): @@ -232,37 +253,6 @@ class Sinopec_ewcc(object): return rtn -if __name__ == "__main__": - ewcc = Sinopec_ewcc() - - # 1 查找现有的标签 - print('<1> 查找 现有的标签') - ewcc.find_tab() # 新增:查找标签页 - - # 2 如果没有登录 ,则使用cookie登录 - if not ewcc.is_login(): - print('<2> 找不到对应的网站,使用cookies尝试登录') - ewcc.load_cookies() - ewcc.new_tab() - - # 3 判断是否登录,如果登录不成功,则使用帐号和密码登录 - if not ewcc.is_login(): - print('<3> 找不对应的网站,使用帐号密码登录') - # 这里要注意12小时才可以登录一次。 - # 这里显示登录界面,并等待输入一分钟 - ewcc.show_login() - - # 4 判断是否登录 ,如果失败,则发送信息到微信上 - if ewcc.is_login(): - ewcc.tab.refresh() - ewcc.save_cookies() - print(" 保存cookies") - else: - ewcc.send_message() - - # ewcc.query_car_info() - - ewcc.quit() diff --git a/query_processor.py b/query_processor.py index 6b7ef44..f20cd1a 100644 --- a/query_processor.py +++ b/query_processor.py @@ -14,7 +14,7 @@ logging.basicConfig( logger = logging.getLogger(__name__) # API基础URL -BASE_URL = 'http://localhost:99' +BASE_URL = 'http://10.190.20.156:99' # 演示数据处理函数 def process_query_data(query_data, parameters): @@ -52,7 +52,7 @@ def get_parameters(): data = response.json() if data['success']: - logger.info(f"成功获取参数配置: {data['data']}") + logger.info(f"成功获取参数配置: ") return data['data'] else: logger.error(f"获取参数配置失败: {data['error']}") @@ -166,11 +166,9 @@ def save_param4(param4_value): # 主处理函数 def main(): logger.info("查询处理代码启动") - - + ewcc = Sinopec_ewcc() # 主循环 while True: - ewcc = Sinopec_ewcc() try: # 获取参数配置 @@ -180,7 +178,11 @@ def main(): time.sleep(30) continue - # 登录浏览器 + # 判断当前连接状态,重新连接 + if not ewcc.browser.states.is_alive: + ewcc.browser.reconnect() + + # 自动登录 if not ewcc.Autologin(parameters['param1'],parameters['param2'],parameters['param3'],parameters['param4']): time.sleep(30) continue @@ -192,12 +194,9 @@ def main(): pending_queries = get_pending_queries() # 处理每条查询 - ewcc.query_car_info("湘AB5W21") for query in pending_queries: # 处理查询数据 - rtn_cars_info=ewcc.query_car_info(query['plate_number'],query['phone']) - #results_count = process_query_data(query, parameters) - + rtn_cars_info=ewcc.query_car_info(query['plate_number'],query['phone']) # 更新查询结果 update_query_result(query['id'], len(rtn_cars_info), rtn_cars_info) @@ -220,8 +219,11 @@ def main(): logger.error(f"处理过程中发生错误: {str(e)}") # 发生错误时,等待更短的时间后重试 time.sleep(30) - + logger.info("查询处理器停止") + if ewcc: + ewcc.quit() + if __name__ == '__main__': main() \ No newline at end of file