def cookies(): while v.token is None: if browser.GetUserData('cookieManager'): browser.GetUserData("cookieManager").VisitAllCookies(v) time.sleep(1) cef.PostTask(0, lambda: cef.QuitMessageLoop())
def click_next_page(self, soup): print('click_next_page') #soup.find('div', class_="page") # ka="page-next" # <a href="javascript:;" ka="page-next" class="next disabled"></a> # <a href="/c101030100-p100109/?page=2" ka="page-next" class="next"></a> next_page = soup.find('a', attrs={"ka": "page-next"}) if not next_page: # 关闭资源 self.browser.CloseBrowser(True) self._close() cef.QuitMessageLoop() sys.exit(0) href = next_page['href'] print('next_page', href) if href == 'javascript:;': self.browser.CloseBrowser(True) self._close() #关闭资源 sys.exit(1) else: sleep = random.randint(5, self.delay) time.sleep(sleep * 1000) #Navigate print('self.browser.LoadUrl("http://www.zhipin.com" + href)') #_thread.start_new_thread(self.browser.LoadUrl, ("http://www.zhipin.com" + href,)) _thread.start_new_thread(self.browser.LoadUrl, ("http://www.baidu.com", ))
def ExceptHook(excType, excValue, traceObject): import traceback, os, codecs # This hook does the following: in case of exception write it to # the "error.log" file, display it to the console, shutdown CEF # and exit application immediately by ignoring "finally" (_exit()). errorMsg = "\n".join(traceback.format_exception(excType, excValue, traceObject)) errorFile = GetApplicationPath("error.log") try: appEncoding = cefpython.g_applicationSettings["string_encoding"] except: appEncoding = "utf-8" if type(errorMsg) == bytes: errorMsg = errorMsg.decode(encoding=appEncoding, errors="replace") try: with codecs.open(errorFile, mode="a", encoding=appEncoding) as fp: fp.write("\n[%s] %s\n" % ( time.strftime("%Y-%m-%d %H:%M:%S"), errorMsg)) except: print("[pygtk_.py]: WARNING: failed writing to error file: %s" % ( errorFile)) # Convert error message to ascii before printing, otherwise # you may get error like this: # | UnicodeEncodeError: 'charmap' codec can't encode characters errorMsg = errorMsg.encode("ascii", errors="replace") errorMsg = errorMsg.decode("ascii", errors="replace") print("\n"+errorMsg+"\n") cefpython.QuitMessageLoop() cefpython.Shutdown() os._exit(1)
def exit_scraping(browser): # Important note: # Do not close browser nor exit app from OnLoadingStateChange # OnLoadError or OnPaint events. Closing browser during these # events may result in unexpected behavior. Use cef.PostTask # function to call exit_scraping from these events. browser.CloseBrowser() cef.QuitMessageLoop()
def DoClose(self, browser): if self._should_close or not self._dom_loaded or self._conf.debug: if IS_MACOS: # macOS doesn't quit message loop when the window closes, so app # remains in dock for no good reason. So we quit it manually. cef.QuitMessageLoop() return False else: browser.ExecuteFunction('cef.close') return True
def on_exit(self, *_): if self.exiting: print("[gtk2.py] on_exit() called, but already exiting") return self.exiting = True self.browser.CloseBrowser(True) self.clear_browser_references() if g_message_loop == MESSAGE_LOOP_CEF: cef.QuitMessageLoop() else: gtk.main_quit()
def exit_app(browser): # Important note: # Do not close browser nor exit app from OnLoadingStateChange # OnLoadError or OnPaint events. Closing browser during these # events may result in unexpected behavior. Use cef.PostTask # function to call exit_app from these events. print("[capture.py] Close browser and exit app") browser.CloseBrowser() cef.QuitMessageLoop() global fifo if fifo: fifo.close()
def endProgram(exctype, value, tb): global t, run_event, camera_ready print("EXITING") run_event.clear() camera_ready.set() t.join() cef.QuitMessageLoop() browser.CloseBrowser() cef.Shutdown() try: sys.exit(0) except SystemExit: os._exit(0)
def hello(): global t, run_event, camera_ready print("EXITING") run_event.clear() cef.QuitMessageLoop() camera_ready.set() t.join() browser.CloseBrowser() cef.Shutdown() ndi.send_destroy(ndi_send) ndi.destroy()
def OnPaint(self, browser, paintElementType, dirtyRects, buffer, width, height): log.error("time OnPaint zavolano %s", datetime.datetime.now()) if paintElementType == cefpython.PET_POPUP: pass elif paintElementType == cefpython.PET_VIEW: self_image = buffer.GetString(mode="rgba", origin="top-left") image = Image.frombytes("RGBA", (self.width, self.height), self_image, "raw", "RGBA", 0, 1) image.save(self.screenshot_fpath, "PNG") cefpython.QuitMessageLoop() else: raise Exception("Unknown paintElementType: %s" % paintElementType)
def customExceptHook(exc_type, exc_value, exc_trace): if exc_type == FinishedException: cef.QuitMessageLoop() else: """Global except hook to exit app cleanly on error. This hook does the following: in case of exception write it to the "error.log" file, display it to the console, shutdown CEF and exit application immediately by ignoring "finally" (_exit()). """ print("[CEF Python] ExceptHook: catched exception, will shutdown CEF") msg = "".join( traceback.format_exception(exc_type, exc_value, exc_trace)) error_file = "error.log" encoding = "utf-8" if type(msg) == bytes: msg = msg.decode(encoding=encoding, errors="replace") try: with codecs.open(error_file, mode="a", encoding=encoding) as fp: fp.write("\n[%s] %s\n" % (time.strftime("%Y-%m-%d %H:%M:%S"), msg)) except: print("[CEF Python] WARNING: failed writing to error file: %s" % (error_file)) # Convert error message to ascii before printing, otherwise # you may get error like this: # | UnicodeEncodeError: 'charmap' codec can't encode characters msg = msg.encode("ascii", errors="replace") msg = msg.decode("ascii", errors="replace") print("\n" + msg) # There is a strange bug on Mac. Sometimes except message is not # printed if QuitMessageLoop and Shutdown were called before the print # message above. cef.QuitMessageLoop() cef.Shutdown() # noinspection PyProtectedMember quit()
def ExceptHook(exc_type, exc_value, exc_trace): ''' 原本的cef.ExceptHook打印不了中文,我拿來魔改一下。 ''' import traceback if exc_type == SystemExit: hint = '[CEF Python] SystemExit.' print('\n' + '=' * len(hint) + '\n' + hint) else: hint = '[CEF Python] ExceptHook: catched exception, will shutdown CEF.' print('\n' + '=' * len(hint) + '\n' + hint) msg = ''.join( traceback.format_exception(exc_type, exc_value, exc_trace)) print('\n' + msg) cef.QuitMessageLoop() cef.Shutdown() os._exit(1)
def OnPaint(self, browser=None, dirty_rects=None, paint_buffer=None, height=None, width=None, element_type=None, **kwargs): """ callback executed when webpage should be painted""" log.debug("Paint") if element_type == cef.PET_POPUP: pass elif element_type == cef.PET_VIEW: self_image = paint_buffer.GetString(mode="rgba", origin="top-left") self.io.write(self_image) cef.QuitMessageLoop() else: raise Exception("Unknown paintElementType: %s" % paintElementType)
def exit_app(browser): browser.CloseBrowser() cef.QuitMessageLoop()
def shutdown(self): if self._cef_browser: self._cef_browser.CloseBrowser(True) self._cef_browser = None cef.QuitMessageLoop()
def dispose(self): self.browser.CloseBrowser() cef.QuitMessageLoop() cef.Shutdown()
run_event.set() t = threading.Thread(target=drawFrame, args=( browser, run_event, camera_ready, )) t.start() cef.MessageLoop() run_event.clear() camera_ready.set() t.join() cef.QuitMessageLoop() browser.CloseBrowser() cef.Shutdown() except: print('Interrupted') run_event.clear() t.join() cef.QuitMessageLoop() browser.CloseBrowser() cef.Shutdown() try: sys.exit(0) except SystemExit: os._exit(0)
def setToken(self, token): if self._token is not None: return self._token = token cef.QuitMessageLoop()
def exit(self): self.browser.CloseBrowser() cef.QuitMessageLoop()