2016-11-23 93 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)