Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用PyQt呈现HTML时的代理_Python_Python 3.x_Web Scraping_Pyqt_Pyqt5 - Fatal编程技术网

Python 使用PyQt呈现HTML时的代理

Python 使用PyQt呈现HTML时的代理,python,python-3.x,web-scraping,pyqt,pyqt5,Python,Python 3.x,Web Scraping,Pyqt,Pyqt5,我希望使用这段代码来抓取JavaScript驱动的页面,这段代码已经出现在许多以前的线程中(c.f.和其他非现场线程中): 很好用 我的问题是我是否需要为这部分代码使用代理(假设我通常希望为所有网络活动使用代理) 我正在使用urllib.request和一个代理来访问有问题的站点,然后将html从那里传递到PyQt5以执行JavaScript mambo。旅程的第二段是否涉及一个需要代理验证的网络连接?如果是这样的话,我应该如何修改这段代码——直到今天我才接触到PyQt,感觉有点不知所措 使用P

我希望使用这段代码来抓取JavaScript驱动的页面,这段代码已经出现在许多以前的线程中(c.f.和其他非现场线程中):

很好用

我的问题是我是否需要为这部分代码使用代理(假设我通常希望为所有网络活动使用代理)

我正在使用urllib.request和一个代理来访问有问题的站点,然后将html从那里传递到PyQt5以执行JavaScript mambo。旅程的第二段是否涉及一个需要代理验证的网络连接?如果是这样的话,我应该如何修改这段代码——直到今天我才接触到PyQt,感觉有点不知所措

使用Python3.5和Windows7

非常感谢

import sys
from PyQt5.QtCore import QEventLoop
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWebEngineWidgets import QWebEngineView

def render(source_html):
    class Render(QWebEngineView):
        def __init__(self, html):
            self.html = None
            self.app = QApplication(sys.argv)
            QWebEngineView.__init__(self)
            self.loadFinished.connect(self._loadFinished)
            self.setHtml(html)
            while self.html is None:
                self.app.processEvents(QEventLoop.ExcludeUserInputEvents | QEventLoop.ExcludeSocketNotifiers | QEventLoop.WaitForMoreEvents)
            self.app.quit()

        def _callable(self, data):
            self.html = data

        def _loadFinished(self, result):
            self.page().toHtml(self._callable)

    return Render(source_html).html