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)