2016-11-23 7 views
0

私は、Webページの表を掻き集める小さな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

このページを確認してください。 スケジュールタスクのための非常に軽量なライブラリを提供し、Qt内で正常に動作するはずです。 How do I get a Cron like scheduler in Python?

しかし、あなたはあなたのGUIの凍結を心配しているか、単にQtの中にすべてネイティブを維持したい場合は、はこれをチェックアウト:Background thread with QThread in PyQtを。

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) 
関連する問題