2016-11-23 92 views
0

我写了一个小型python代码来在网页中刮取表格。它使用qt4来刮擦。现在,问题是我需要每5分钟不停地抓取数据。我正在考虑刷新页面并再次刷新。我如何刷新网页并每隔5分钟再刮一次? 下面是我用来刮擦的代码。python qt4:重新刷新并再次刷新

import sys 
from BeautifulSoup import BeautifulSoup 
from PyQt4.QtGui import * 
from PyQt4.QtCore import * 
from PyQt4.QtWebKit import * 
from lxml import html 
import redis 
from time import sleep 

class Scraper(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_() 
     #self.render = Scraper(url) 

    def _loadFinished(self, result): 
     self.frame = self.mainFrame() 
     self.app.quit() 
    def close_app(self): 
     self.app.quit() 
     print "closed" 

url = 'https://www.nseindia.com/live_market/dynaContent/live_analysis/top_gainers_losers.htm?cat=G' 

r = Scraper(url) 
result = r.frame.toHtml() 
formatted_result = str(result.toAscii()) 
soup = BeautifulSoup(formatted_result) 
table = soup.find(id="topGainers") 

print table 

回答

0

您可以使用QtCore.QTimer.singleShot(5 * 60, func)函数。

def __init__(self, url): 
    # ... 
    self.show_page() 

def show_page(self) 
    # display page here 

    QtCore.QTimer.singleShot(5 * 60, self.show_page)