首页 > 作文

利用PyQt5制作一个豆瓣电影信息查看器

更新时间:2023-04-04 16:17:39 阅读: 评论:0

制作一个查看器可以查看豆瓣前100名电影的信息,当然这个爬取信息比较简单。所以重点放在 qthread 多线程的应用上面。

qthread 子线程是 pyqt5 自带的一个线程使用,因为如果使用 pyqt5 的主线程去做所有的事情。如果处理速度太慢的情况下主线程就会直接出现卡死状态。

网络信息提取的相关模块有下面这些,主要是一个获取 html 信息,另一个解析 html5 的页面信息。

import requests  # 网络请求库from bs4 import beautifulsoup  # h5页面元素解析库from fake_uragent import uragent  # 身份信息生成库

ui 界面布局相关的模块。

from pyqt5.qtwidgets import *from pyqt5.qtgui import *from pyqt5.qtcore import *

应用操作相关的模块。

import sys

先把专门用于信息爬取的独立线程写好。新建一个线程类继承自 qthread,其中最重要的是要写上initdel、run这几个函数。这几个函数对线程类 qthread 里面的函数重写的,业务逻辑是通过 run 函数实现的。

'''独立线程处理信息爬取'''class doubanworker(qthread):    trigger = pyqtsignal(str)    finished = pyqtsignal(bool)    def __init__(lf, parent=none):        super(doubanworker, lf).__init__(parent)  辄在文言文中的意思      lf.parent = parent        lf.url = '/d/file/titlepic/top250'        lf.working = true    def __del__(lf):        lf.working = fal        lf.wait()    def run(lf):        # 构造uragent身份设备信息        headers = {            "ur-agent": str(uragent().random),        }        for page in range(4):            url = lf.url.format(page * 25)            respon = reques清蒸大闸蟹螃蟹的做法和步骤ts.get(url, headers=headers)            bs = beautifulsoup(respon.text, 'html.parr')            movie_list = bs.find_all('div', class_='item')            for movie in movie_list:                movie_q = movie.find('em').text                movie_name = movie.find('span').text                movie_score = movie.find("span", class_='rating_num').text                movie_inst = movie.find("span", class_='inq').text                movie陆军军医大学分数线_link = movie.find('a')['href']                lf.trigger.emit('\n')                lf.trigger.emit('排名:' + movie_q + '\n')                lf.trigger.emit('名称:' + movie_name + '\n')                lf.trigger.emit('评分:' + movie_score + '\n')                lf.trigger.emit('描述:' + movie_inst + '\n')                movie_link = "<font color='blue'>" + movie_link + "</font>"                lf.trigger.emit('链接:' + movie_link + '\n')        lf.finished.emit(true)

主界面的 ui 布局信息比较简单,主要是一个文本浏览器和一个开始的按钮组成的。

def init_ui(lf):        '''        初始化ui界面布局        :return:        ''win7音量图标不见了'        lf.twindowtitle('豆瓣电影排名')        lf.twindowicon(qicon('电影.ico'))        lf.resize(400, 300)        vbox = qvboxlayout()        lf.result_brower = qtextbrowr()        lf.result_brower.tfont(qfont('宋体', 8))        lf.result_brower.treadonly(true)        lf.result_brower.tplaceholdertext('信息展示区域')        lf.result_bro重来 黄小琥wer.ensurecursorvisible()        vbox.addwidget(lf.result_brower)        lf.thread_ = doubanworker(lf)        lf.thread_.trigger.connect(lf.update_log)        lf.thread_.finished.connect(lf.finished)        lf.start_btn = qpushbutton()        lf.start_btn.ttext('获取前100名豆瓣电影详细信息')        lf.start_btn.clicked.connect(lf.start_btn_click)        vbox.addwidget(lf.start_btn)        lf.tlayout(vbox)

文本浏览器内容保持追加更新的槽函数,将电影信息获取的实施进度追加到页面上可以看到。

 def update_log(lf, text):        '''        槽函数:向文本浏览器中写入内容        :param text:        :return:        '''        cursor = lf.result_brower.textcursor()        cursor.moveposition(qtextcursor.end)        lf.result_brower.append(text)        lf.result_brower.ttextcursor(cursor)        lf.result_brower.ensurecursorvisible()

开始按钮上关联的槽函数,用这个函数在收到主线程的开始命令时来启动子线程的运行,子线程就会自动去爬取豆瓣上面的排名信息。

def start_btn_click(lf):        '''        槽函数:启动子线程爬取豆瓣电影信息        :return:        '''        lf.start_btn.tenabled(fal)        lf.thread_.start()

在收到子线程执行完成的信息时,将开始按钮完成可用的状态可以点击再次执行。

  def finished(lf, finished):        '''        槽函数:处理完成时将开始按钮变成可点击状态        :param finished:        :return:        '''        if finished is true:            lf.start_btn.tenabled(true)

完成后,启动后台入口函数,最后看一下入口函数的写法和往常是一样的。

if __name__ == '__main__':    '''    主函数入口    '''    app = qapplication(sys.argv)    main = doubanui()    main.show()    sys.exit(app.exec_())

到此这篇关于利用pyqt5制作一个豆瓣电影信息查看器的文章就介绍到这了,更多相关pyqt5电影信息查看器内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

本文发布于:2023-04-04 16:17:37,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/b338e3b701709678ebc5e1e47e8eba67.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:利用PyQt5制作一个豆瓣电影信息查看器.doc

本文 PDF 下载地址:利用PyQt5制作一个豆瓣电影信息查看器.pdf

标签:函数   线程   信息   豆瓣
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图