Beispiel #1
0
    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())
Beispiel #2
0
    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", ))
Beispiel #3
0
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)
Beispiel #4
0
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()
Beispiel #5
0
 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
Beispiel #6
0
 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()
Beispiel #7
0
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()
Beispiel #8
0
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)
Beispiel #9
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()
Beispiel #10
0
 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)
Beispiel #11
0
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()
Beispiel #12
0
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)
Beispiel #13
0
 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)
Beispiel #14
0
 def exit_app(browser):
     browser.CloseBrowser()
     cef.QuitMessageLoop()
Beispiel #15
0
 def shutdown(self):
     if self._cef_browser:
         self._cef_browser.CloseBrowser(True)
         self._cef_browser = None
     cef.QuitMessageLoop()
Beispiel #16
0
 def dispose(self):
     self.browser.CloseBrowser()
     cef.QuitMessageLoop()
     cef.Shutdown()
Beispiel #17
0
    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)
Beispiel #18
0
 def setToken(self, token):
     if self._token is not None:
         return
     self._token = token
     cef.QuitMessageLoop()
Beispiel #19
0
 def exit(self):
     self.browser.CloseBrowser()
     cef.QuitMessageLoop()