使用PyQt呈现HTML

时间:2017-04-10 18:32:46

标签: python python-3.x web-scraping pyqt pyqt5

我希望使用此代码来抓取JavaScript驱动的页面,该代码出现在许多过去的线程上(cf thisthis,以及非现场线程上的其他线程):< / p>

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

它工作正常。

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

我使用urllib.request和代理来访问相关网站,然后将html从那里传递到PyQt5来执行JavaScript mambo。旅程的第二段是否涉及应该代理的网络连接?如果是这样,我应该如何更改此代码 - 直到今天才触及PyQt并且感觉有点过头了。

使用Python 3.5和Windows 7。

非常感谢。

0 个答案:

没有答案