如何重新加载HTML PyQt4

如何重新加载HTML PyQt4,html,pyqt4,render,Html,Pyqt4,Render,我已经设法使用建议的代码,以便从网页呈现HTML,然后根据需要解析、查找和使用文本。我用的是PyQt4。但是,我感兴趣的网页经常更新,我想重新提交该网页,并检查更新的HTML以获取新信息 因此,我的pythonscript中有一个循环,这样我就可以重新开始了。然而,这使得程序崩溃。我在网上搜索了一下,发现这是意料之中的,但我没有找到任何关于如何正确操作的建议。我想一定很简单吧 from PyQt4.QtGui import * from PyQt4.QtCore import * from

我已经设法使用建议的代码,以便从网页呈现HTML,然后根据需要解析、查找和使用文本。我用的是PyQt4。但是,我感兴趣的网页经常更新,我想重新提交该网页,并检查更新的HTML以获取新信息

因此,我的pythonscript中有一个循环,这样我就可以重新开始了。然而,这使得程序崩溃。我在网上搜索了一下,发现这是意料之中的,但我没有找到任何关于如何正确操作的建议。我想一定很简单吧

from PyQt4.QtGui import *

from PyQt4.QtCore import *

from PyQt4.QtWebKit import *


class Render (QWebPage):

    def __init__(self, url):
        self.app = QApplication(sys.argv)
        QWebPage.__init__(self)
        self.loadFinished.connect(self._loadFinished)
        self.mainFrame().load(QUrl(url))
        self.app.exec_()
    def _loadFinished(self, result):
        self.frame = self.mainFrame()
        self.app.quit()

r = Render(url)  

html = r.frame.toHtml()
S、 o当我第二次点击
r=Render(url)
时,它崩溃了。S、 o我正在寻找类似
r=Rerender(url)
的东西

正如你可能猜到的,我不是一个很好的程序员,我通常通过偷我几乎不懂的代码来过日子。但这是我第一次找不到答案,所以我想我应该自己问个问题

我希望我的问题足够清楚,并且有人能给出答案。

简单演示(适应口味):

简单演示(适应口味):


谢谢你的建议。这是我读过的帖子之一,我不认为这对我有帮助。我会再仔细看看,如果它确实不能解决我的问题,我会解释为什么建议的解决方案是处理如何呈现列表中指定的多个不同网页。如果我制作一个长列表多次指定相同的url,这可能会起作用,但这似乎不是一个有效的解决方案。我不是一个熟练的程序员,不知道如何根据自己的需要修改代码。我希望其他人真的做了这件事,因为我认为这不是一个不寻常的功能。我会四处看看,看看是否找到了答案,如果我找到了什么,我会在这里发布。你显然没有正确阅读答案,因为它非常清楚地完全符合你的要求,只需要稍加修改。无论如何,我已经发布了另一个简化的演示,希望能让事情变得更清楚。可能是重复的,谢谢你的建议。这是我读过的帖子之一,我不认为这对我有帮助。我会再仔细看看,如果它确实不能解决我的问题,我会解释为什么建议的解决方案是处理如何呈现列表中指定的多个不同网页。如果我制作一个长列表多次指定相同的url,这可能会起作用,但这似乎不是一个有效的解决方案。我不是一个熟练的程序员,不知道如何根据自己的需要修改代码。我希望其他人真的做了这件事,因为我认为这不是一个不寻常的功能。我会四处看看,看看是否找到了答案,如果我找到了什么,我会在这里发布。你显然没有正确阅读答案,因为它非常清楚地完全符合你的要求,只需要稍加修改。无论如何,我已经发布了另一个简化的演示,希望能让事情更清楚。再次感谢。您的示例为我提供了一个按需刷新的网页对象。我现在的问题是,我不知道如何“用html做事情”,因为我对对象处理的知识是不存在的。如何实际访问对象中的html?我知道这是一件非常基本的事情,我应该能够通过学习基本知识来发现。这也是为什么我在这里问问题,让人们在没有完全能够使用答案的情况下工作的原因。再次感谢您,我将再次深入研究这两个示例以及基本文档。啊,我在第一个示例中找到了答案,所以我在您的“使用html做一些事情”下面添加了html=self.mainFrame().toHtml(),似乎很管用。再次感谢。您的示例为我提供了一个按需刷新的网页对象。我现在的问题是,我不知道如何“用html做事情”,因为我对对象处理的知识是不存在的。如何实际访问对象中的html?我知道这是一件非常基本的事情,我应该能够通过学习基本知识来发现。这也是为什么我在这里问问题,让人们在没有完全能够使用答案的情况下工作的原因。再次感谢您,我将再次深入研究这两个示例以及基本文档。啊,我在第一个示例中找到了答案,所以我在您的“使用html做事情”下面添加了html=self.mainFrame().toHtml(),它似乎可以工作。
import sys, signal
from PyQt4 import QtCore, QtGui, QtWebKit

class WebPage(QtWebKit.QWebPage):
    def __init__(self, url):
        super(WebPage, self).__init__()
        self.url = url
        self.mainFrame().loadFinished.connect(self.handleLoadFinished)
        self.refresh()

    def refresh(self):
        self.mainFrame().load(QtCore.QUrl(self.url))

    def handleLoadFinished(self):
        print('Loaded:', self.mainFrame().url().toString())
        # do stuff with html ...
        print('Reloading in 3 seconds...\n')
        QtCore.QTimer.singleShot(2000, self.refresh)

if __name__ == '__main__':

    signal.signal(signal.SIGINT, signal.SIG_DFL)
    app = QtGui.QApplication(sys.argv)
    webpage = WebPage('http://en.wikipedia.org/')
    print('Press Ctrl+C to quit\n')
    sys.exit(app.exec_())