PyQt是一个创建GUI应用程序的工具包。它是Python编程语言和Qt库的成功融合。Qt库是目前最强大的库之一。
最近在工作中遇到的问题是如何在DragonBoard 410c开发板debain系统上开发定时抓取网页的功能,话不多说,贴上代码,紧供参考:
# -*- coding: utf-8 -*- import urllib.request import threading from PyQt4.QtCore import QTimer from PyQt4 import QtCore, QtGui, uic class WebCrawler(QtGui.QMainWindow): def __init__(self,func): QtGui.QMainWindow.__init__(self) self._func=func def ReadUrlLoop(self,loopTime,url): self._url=url self._delayTime=0 self._listenWebTimer = QTimer(self) self._listenWebTimer.setInterval(loopTime*1000) self._listenWebTimer.timeout.connect(self.ReadUrl) self._listenWebTimer.start() def ReadUrl(self): timer = threading.Timer(self._delayTime, self.ReadUrlInfo) timer.start() def ReadUrlInfo(self): content = urllib.request.urlopen(self._url).read() if(self._func): self._func(content)
开发中使用了qtdesigner开发程序UI,使用pychorm编写python语句。
在上面代码中定义了WebCrawler类,在这个类中提供了三个方法:
在类的初始化中传入func作为网页内容抓取成功后的回调方法。
ReadUrlLoop方法中传入loopTime 以及url参数,作用是循环loopTime时间抓取网页内容。具体实现是利用了python中的QTimer方法
ReadUrl通过threading.Timer实现异步线程加载网页的功能。
ReadUrlInfo为具体抓取网页功能的实现。抓取结束后调用func的回调方法
外部只需要调用WebCrawler类中的ReadUrlLoop方法传入对应参数即可。
参考代码:
self._webCrawler = libs.WebManager.WebCrawler(self.TestFunction) self._webCrawler.ReadUrlLoop(3,webUrl)