웹 페이지에서 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)
있습니다.
짐작할 수 있듯이, 저는 프로그래머가별로이며, 거의 이해하지 못하는 코드를 훔쳐가는 경우가 많습니다. 그런데 처음으로 답을 찾을 수 없어서 직접 질문 해야겠다고 생각했습니다.
내 질문이 충분히 명확하고 누군가가 답을 얻었기를 바랍니다.
간단한 데모 (맛에 맞게 조정) :
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_())
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다