【问题标题】:python qt4 : To referesh and scrape againpython qt4:再次刷新和刮
【发布时间】:2016-11-23 04:19:23
【问题描述】:

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

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

【问题讨论】:

    标签: python qt4


    【解决方案1】:

    查看此页面。 它为调度任务提供了一个非常轻量级的库,并且应该可以在 Qt 中正常工作。 How do I get a Cron like scheduler in Python?

    但如果您担心您的 GUI 冻结或只是想在 Qt 中保留所有内容原生,请查看:Background thread with QThread in PyQt

    【讨论】:

      【解决方案2】:

      你可以使用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)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-03-01
        • 1970-01-01
        • 2017-05-01
        • 2013-01-10
        • 2019-11-26
        • 1970-01-01
        • 2023-04-03
        相关资源
        最近更新 更多