在DragonBoard 410c开发板debain系统上使用pyqt开发定时抓取网页功能

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)


猜你喜欢

转载自blog.csdn.net/conglf/article/details/80079595
今日推荐