python相关工具代码之网络图片下载并显示出下载图片保存到的地址

# coding=utf-8
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
import time
import random
import os
import urllib.request
from bs4 import BeautifulSoup'''
信号传参类型
pyqtSignal()                               #无参数信号
pyqtSignal(int)                            # 一个参数(整数)的信号 
pyqtSignal([int],[str]                     # 一个参数(整数或者字符串)重载版本的信号
pyqtSignal(int,str)                        #二个参数(整数,字符串)的信号 
pyqtSignal([int,int],[int,str])          #二个参数([整数,整数]或者[整数,字符串])重载版本
'''class Mythread(QThread):# 定义信号,定义参数为str类型# breakSignal = pyqtSignal(str, list)aaaSignal = pyqtSignal(str,list)def __init__(url, parent=None):super().__init__(parent)def set_url(self,url):self.url = urldef get_img_urls(self):try:html = urllib.request.urlopen(self.url).read()soup = BeautifulSoup(html, 'html.parser')img_tags = soup.find_all('img')img_urls = [img['src'] for img in img_tags if img.get('src')]return img_urlsexcept Exception as e:print("Error occurred: ", e)return []def run(self):img_urls=self.get_img_urls()self.download_imgs(img_urls)def download_imgs(self,img_urls):folder = r'E:\PYthon\python_基础\Python_learn\101_python学习相关\jpg_download'os.makedirs(folder, exist_ok=True)stop = 1if stop:for i, img_url in enumerate(img_urls):i += 1# time.sleep(1)try:file_path = os.path.join(folder, f"image_{i}.jpg")urllib.request.urlretrieve(img_url, file_path)txt = f"Downloaded {img_url} {file_path}"print(txt)print(i)self.aaaSignal.emit(txt, [file_path])except Exception as e:failed_txt = f'Failed to download {img_url} {e}'print(failed_txt)self.aaaSignal.emit(failed_txt, img_urls)# 让程序休眠time.sleep(1)if __name__ == '__main__':app = QApplication([])dlg = QDialog()dlg.resize(400, 300)dlg.setWindowTitle("下载图片界面")dlgLayout = QVBoxLayout()dlgLayout.setContentsMargins(40, 40, 40, 40)btn = QPushButton('测试按钮')stop_btn = QPushButton('STOP')load_bth = QPushButton('load')dlgLayout.addWidget(btn)dlgLayout.addWidget(stop_btn)dlgLayout.addStretch(40)dlg.setLayout(dlgLayout)dlg.show()textEdit = QTextEdit()dlgLayout.addWidget(textEdit)thread = Mythread()def stop():global stopstop = 0thread.run = 0btn.setText("停止下载")print('下载停止')def downing_txt(i,img_urls):btn.setText(i)def jpg_load(txt,img_urls):txt_show='\n'.join(img_urls)textEdit.setText(txt_show)stop_btn.clicked.connect(stop)# 创建线程# # 注册信号处理函数# thread.breakSignal.connect(chuli)# thread.aaaSignal.connect(downing_txt)thread.aaaSignal.connect(jpg_load)# # 启动线程url = "https://www.oldboyedu.com"img_urls = thread.set_url(url)# thread.download_imgs(img_urls)thread.start()app.exec_()dlg.exec_()app.exit()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/222432.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【华为数据之道学习笔记】5-2华为数据湖的特点

华为数据湖是逻辑上对内外部的结构化、非结构化的原始数据的逻辑汇聚。数据入湖要遵从6项入湖标准,基于6项标准保证入湖的质量,同时面向不同的消费场景提供两种入湖方式,满足数据消费的要求。经过近两年的数据湖建设,目前已经完成…

centos7安装和卸载MySQL8.0

一.卸载Mysql 1.关闭MySQL服务 systemctl stop mysqld 2.使用 rpm 命令查看已安装的安装包 rpm -qa|grep mysql 3.使用yum卸载安装的mysql yum remove mysql mysql-server mysql-libs mysql-server 4.查询剩余的安装包 rpm -qa|grep mysql 这里是我的centos7上的mysq…

Docker容器数据卷

一、概念 1.定义 卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过Union File System提供一些用于持续存储或共享数据的特性。 卷的设计目的就是数据的持久化,完全独…

0-50KHz频率响应模拟量高速信号隔离变送器

0-50KHz频率响应模拟量高速信号隔离变送器 型号:JSD TA-2322F系列 高速响应时间,频率响应时间快 特点: ◆小体积,低成本,标准 DIN35mm 导轨安装方式 ◆六端隔离(输入、输出、工作电源和通道间相互隔离) ◆高速信号采集 (-3dB,Min≤ 3.5 uS,订…

谷歌上架或更新被拒审的可能原因有哪些?

众所周知,在Google play应用商店上架或更新应用时,开发者需要遵守谷歌的相关规定和政策,否则可能会导致审核不通过,甚至永久封号。 很多开发者在提交应用到谷歌Play商店或进行应用更新时,即便了解了Google Play商店的…

unity 双摇杆控制教程(方向和旋转)

使用工具: unity 2021.2.8f1c1 visual studio 2022 插件: Joystick Pack 准备工作: 1.新建一个plane(作为地面),一个胶囊体(作为玩家),并在胶囊体上添加刚体组件&am…

java实现冒泡排序及其动图演示

冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。重复这个过程直到整个数列都是按照从小到大的顺序排列。 具体步骤如下: 比较相邻的两个元素,如果前…

hive聚合函数之排序

1 全局排序(Order By) Order By:全局排序,只有一个Reduce。 (1).使用Order By子句排序 asc(ascend):升序(默认) desc(descend)&#…

分布式解决方案与实战

分布式多线程性能调优 使用多线程优化接口 //下单业务public Object order( long userId){long start System.currentTimeMillis();//方法的开始时间戳&#xff08;ms&#xff09;JSONObject orderInfo remoteService.createOrder(userId);Callable<JSONObject> calla…

c语言多线程队列实现

为了用c语言实现队列进行多线程通信&#xff0c;用于实现一个状态机。 下面是实现过程 1.实现多线程队列入栈和出栈&#xff0c;不加锁 发送线程发送字符1&#xff0c;接收线程接收字符并打印。 多线程没有加锁&#xff0c;会有危险 #include "stdio.h" #include …

C++笔记之system()用于在Qt中执行系统命令的习惯

C笔记之system()用于在Qt中执行系统命令的习惯 参考博文&#xff1a;qt-C笔记之std::tostring()、.toStdString()、.toLocal8Bit().constData()的使用场景 code review! 文章目录 C笔记之system()用于在Qt中执行系统命令的习惯一.一般我用的int system( const char *command…

HarmonyOS学习0基础版

1.安装并配置DevEco 访问 HUAWEI开发者官网 找到 DevEco点击下载,我这里以windows版为例 点击下载并安装 (安装时直接点击下一步下一步,然后运行安装好的DevEco) 注意&#xff1a;第一次安装没有开发环境的时候&#xff0c;这里点击Do not import settings&#xff0c;进入软…

modelbox线程爆满宕机bug

序 该bug的解决需要特别感谢张同学。有了大佬的帮助&#xff0c;这个bug才得以解决。 问题现象 modelbox可以进行模型推理&#xff0c;但压测一段时间后&#xff0c;modelbox会宕机&#xff0c;并发生段错误。 “libgomp: Thread creation failed: Resource temporarily una…

MacOS多屏状态栏位置不固定,程序坞不小心跑到副屏

目录 方式一&#xff1a;通过系统设置方式二&#xff1a;鼠标切换 MacOS多屏状态栏位置不固定&#xff0c;程序坞不小心跑到副屏 方式一&#xff1a;通过系统设置 先切换到左边 再切换到底部 就能回到主屏了 方式二&#xff1a;鼠标切换 我的两个屏幕放置位置如下 鼠标在…

OpenCV imencode 函数详解与应用示例

OpenCV imencode 函数详解与应用示例 介绍imencode 函数的基本信息示例代码应用场景 介绍 OpenCV是一个强大的计算机视觉库&#xff0c;提供了许多图像处理和分析的工具。imencode函数是其中之一&#xff0c;用于将图像编码为指定格式的字节流。这个函数对于图像的存储、传输和…

实验03:OSPF配置网络实验

1.实验目的&#xff1a; 本实验的主要目的是了解OSPF协议的基本概念、OSPF网络的配置及验证&#xff0c;通过实验来掌握OSPF协议的工作原理、配置方法、路由表的生成过程等。 2.实验内容&#xff1a; 设计一个拓扑结构&#xff0c;并在网络设备上进行配置&#xff1b;配置OS…

架构简洁之道有感,谈谈软件组件聚合的张力

配图由腾讯混元助手生成 这篇文章介绍了软件架构设计中组件设计思想&#xff0c;围绕“组件间聚合的张力”这个有意思的角度&#xff0c;介绍了概念&#xff0c;并且结合架构设计示例对这个概念进行了进一步阐述。 组件聚合&#xff1f;张力&#xff1f;这标题&#xff0c;有种…

华为HCIP认证H12-821题库下

26、6.交换技术核心知识 &#xff08;单选题&#xff09;某交换机运行RSTP协议&#xff0c;其相关配置信息如图所示,请根据命令配置情况指出对于Instance 1&#xff0c;该交换机的角色是: A、根交换机 B、非根交换机 C、交换机 D、无法判断 正确答案是&…

本地计算机连接两个Github账号

两个Github账号与本地计算机连接 注册Github账号Git的下载与安装生成SSH密钥为Github账户设置SSH Key编辑config文件连接Github仓库其它命令 注册Github账号 注册两个Github账号。这一步很简单&#xff0c;跟注册其它账号差不多。 Git的下载与安装 下载地址&#xff1a;http…

在C++中->运算符

在C中&#xff0c;->是一个运算符&#xff0c;称为成员访问运算符&#xff08;Member Access Operator&#xff09;。它用于通过指针访问对象的成员&#xff08;变量或函数&#xff09;。 下面是对->运算符的详细解释&#xff1a; 语法&#xff1a; pointer->member …