本文整理汇总了Python中webpage.WebPage.setParent方法的典型用法代码示例。如果您正苦于以下问题:Python WebPage.setParent方法的具体用法?Python WebPage.setParent怎么用?Python WebPage.setParent使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类webpage.WebPage
的用法示例。
在下文中一共展示了WebPage.setParent方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: WebBrowser
# 需要导入模块: from webpage import WebPage [as 别名]
# 或者: from webpage.WebPage import setParent [as 别名]
class WebBrowser(QObject):
def __init__(self):
logging.debug("-->")
super(WebBrowser, self).__init__()
self.app = QApplication.instance()
if self.app is None:
self.app = QApplication(sys.argv)
self.app.setQuitOnLastWindowClosed(False)
self.event_loop = QEventLoop()
self.cookie_jar = CookieJar()
self.proxy = QNetworkProxy(QNetworkProxy.HttpProxy, "127.0.1.1", 8888)
self.network_manager = NetworkAccessManager()
self.network_manager.setCookieJar(self.cookie_jar)
# self.network_manager.setProxy(self.proxy)
self.web_page = WebPage()
self.web_page.setNetworkAccessManager(self.network_manager)
self.web_view = QWebView()
self.web_view.setPage(self.web_page)
self.web_view.settings().setAttribute(QWebSettings.AutoLoadImages,False)
self.web_view.settings().setAttribute(QWebSettings.PluginsEnabled, True)
self.web_view.settings().setAttribute(QWebSettings.JavascriptEnabled, True)
# self.web_view.settings().setAttribute(QWebSettings.XSSAuditingEnabled, False)
self.web_view.settings().setAttribute(QWebSettings.LocalContentCanAccessRemoteUrls, True)
self.connect(self.web_view.page().networkAccessManager(),SIGNAL("finished(QNetworkReply*)"),self.network_reply_finished)
self.page_loaded_validator = None
self.page_loaded_handler = None
self.page_loaded_handler_kwargs = None
self.timeout_message = None
self.timer = None
self.event_loop_exception = None
logging.debug("<--")
def network_reply_finished(self,reply):
logging.debug("Reply received for: " + reply.request().url().toString())
self.network_manager.request_queue[reply.request().url()] = "Completed"
redirect_url = self.get_redirect_url(reply.attribute(QNetworkRequest.RedirectionTargetAttribute),reply.request().url())
if redirect_url is not None:
self.redirect(redirect_url,reply.request())
def redirect(self,url,request):
frame = self.find_frame_to_redirect(self.web_view.page().mainFrame(),request)
if frame is not None:
logging.debug("Redirecting to: " + url.toString())
frame.load(url)
def find_frame_to_redirect(self,frame,request):
if frame.requestedUrl() == request.url():
return frame
else:
children = frame.childFrames()
for child in children:
frame_to_redirect = self.find_frame_to_redirect(child,request)
if frame_to_redirect is not None:
return frame_to_redirect
def get_redirect_url(self,possible_redirect_url, orig_requested_url):
if possible_redirect_url is not None:
if possible_redirect_url.isRelative():
if orig_requested_url.isRelative():
return None
possible_redirect_url.setScheme(orig_requested_url.scheme())
possible_redirect_url.setHost(orig_requested_url.host())
if orig_requested_url != possible_redirect_url:
return possible_redirect_url
def get_cookies(self):
cookies = self.cookie_jar.allCookies()
raw_cookies = []
first = True
for cookie in cookies:
raw_cookies.append(cookie.toRawForm())
return raw_cookies
def set_cookies(self,raw_cookies):
cookies = []
for raw_cookie in raw_cookies:
cookie_list = QNetworkCookie.parseCookies(raw_cookie)
for cookie in cookie_list:
cookies.append(cookie)
self.cookie_jar.setAllCookies(cookies)
def cleanup(self):
logging.debug("-->")
self.disconnect(self.web_view.page().networkAccessManager(),SIGNAL("finished(QNetworkReply*)"),self.network_reply_finished)
self.web_view.setParent(None)
self.web_page.setParent(None)
self.network_manager.setParent(None)
self.event_loop.setParent(None)
self.setParent(None)
del self.web_view
del self.web_page
del self.network_manager
del self.event_loop
del self.app
logging.debug("<--")