从单线程到多线程——Thread模块-代码实例详解——上一篇博客,有详解。这个就是对上一篇的一个小练习。

这是个单线程:获得图片

import osimport requests
from lxml import etree
from lxml import html
from html.parser import HTMLParser
import re
count = 0
wenjian = input("你的照片将要储存到......文件夹:")
img_path = f"./{wenjian}/"  # 指定保存地址
if not os.path.exists(img_path):print("您没有这个文件为您新建一个文件:")os.mkdir(img_path)
else:for i in range(1,5,1):if i==1:url = "https://sc.chinaz.com/tupian/nvshengtupian.html"else:url = f"https://sc.chinaz.com/tupian/nvshengtupian_{i}.html"headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36 Edg/121.0.0.0"}response = requests.get(url,headers=headers)response.encoding= "utf-8"response = response.textimg_html = re.findall('data-original="(.*?)"',response)for img in img_html:img = 'https:'+imgcount += 1myimg = requests.get(img)file_name = f'{img_path}图片{str(count)}.jpg'# 图片和音乐WB的二进制写入方式f = open(file_name, "wb")f.write(myimg.content)print("正在保存" + str(count) + " 张图片")

不用说速度超级慢。

所以采用多线程。

import queue
import re
import time
import random
import threading
import requests
from bs4 import BeautifulSoup
import queuedef get_main(url):img_html2=[]headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36 Edg/121.0.0.0"}response = requests.get(url,headers=headers)response.encoding= "utf-8"response = response.textimg_html = re.findall('data-original="(.*?)"',response)for img in img_html:img = 'https:' + imgimg_html2.append(img)img_name = re.findall('alt="(.*?)"',response)dict1 = dict(zip(img_html2,img_name))resultList =list(dict1.items())return resultListdef do_craw(url_queue:queue.Queue,fout):while True:url = url_queue.get()list3 = get_main(url)for list in list3:fout.write(str(list)+"\n")time.sleep(random.randint(1, 2))if __name__=="__main__":urls = {f"https://sc.chinaz.com/tupian/nvshengtupian_{i}.html"for i in range(2,16)}url_queue = queue.Queue()for url in urls:url_queue.put(url)fout = open("02.zhanzhang.txt", "w")for away in range(14):t=threading.Thread(target=do_craw,args=(url_queue,fout,))t.start()

for away in range(14):
        t=threading.Thread(target=do_craw,args=(url_queue,fout,))
        t.start()

这个的意思是我开了14个线程,因为我只有14张要保存的东西吗嘛,所以14个就可以ok。

要是想要更快,在获取网址上面加入线程。

这这个是例子,要看上一篇我写的,就会对线程有初步了解。我写了几个例子加深理解。

最重要的是使用queue模块,使各个线程共享数据。


如果想要下载图片,在加一个线程,用来get图片的网址。然后下载。

一定得到的是jpg网址哦!!!

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

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

相关文章

minium-小程序自动化测试框架

提起 UI 自动化测试,web 端常用 Selenium,手机端常用 Appium,那么很火的微信小程序可以用什么工具来进行自动化测试?本篇将介绍一款专门用于微信小程序的自动化测试工具 - minium。 简介 minium 是为小程序专门开发的自动化框架…

开源分子对接程序rDock的安装及使用流程

前言 本文介绍开源分子对接程序rDock在Linux Ubuntu 22.04系统上的conda安装、编译安装过程及程序使用流程。 一、rDock是什么? rDock来源 rDock是一个快速、多功能的开源对接程序,可用于将小分子与蛋白质和核酸对接。它专为高通量虚拟筛选&#xff08…

Xtuner 大模型单卡低成本微调之本地实战--医学问答

xtuner convert pth_to_hf internlm_chat_7b_qlora_medqa2019_e3.py ./work_dirs/internlm_chat_7b_qlora_medqa2019_e3/epoch_3.pth/mp_rank_00_model_states.pt ./任何使用xtuner可以查看这里 安装和使用 github 文末有 自定义微调 场景需求 基于 InternLM-chat-7B 模型…

用结构减法比较平面上4点结构的顺序

( A, B )---6*30*2---( 1, 0 )( 0, 1 ) 让网络的输入只有6个节点,AB训练集各由6张二值化的图片组成,A有4个点,B全是0.收敛误差7e-4,收敛199次,统计迭代次数平均值并排序。 如果行和列自由变换,迭代次数不…

LaTex和Word中推荐使用的矢量图片格式

1、LaTex 推荐使用eps矢量格式。(该格式直接放在word中不会显示,但是通过插入word后双击打开查看 2、Word 推荐使用svg矢量格式。该格式可以直接插入word中。 3、plt保存代码 import matplotlib.pyplot as plt# 绘制图形 x [1, 2, 3, 4, 5] y1 [1…

文心一言 VS 讯飞星火 VS chatgpt (199)-- 算法导论15.2 1题

一、用go语言,对矩阵规模序列(5,10,3,12,5,50,6),求矩阵链最优括号化方案。 文心一言,代码正常运行: 在Go语言中,为了找到矩阵链乘法的最优括号…

PostgreSQL教程(二):pg安装、架构基础、创建并访问数据库

安装 自然,在你能开始使用PostgreSQL之前, 你必须安装它。PostgreSQL很有可能已经安装到你的节点上了, 因为它可能包含在你的操作系统的发布里, 或者是系统管理员已经安装了它。如果是这样的话, 那么你应该从操作系统…

如何在OpenWRT安装内网穿透工具实现远程访问本地搭建的web网站界面

文章目录 前言1. 检查uhttpd安装2. 部署web站点3. 安装cpolar内网穿透4. 配置远程访问地址5. 配置固定远程地址 前言 uhttpd 是 OpenWrt/LuCI 开发者从零开始编写的 Web 服务器,目的是成为优秀稳定的、适合嵌入式设备的轻量级任务的 HTTP 服务器,并且和…

Mac远程连接Windows 11

1. Windows配置 1.1 打开远程连接权限 打开“控制面板”搜索“远程”,选择“允许远程访问你的计算机”这一项。 1.2 添加远程连接用户 打开“计算机管理”,并在用户下新增“新用户”,share是我自己使用的名字,这个名字不固定随…

FPGA_SD卡读写

一 SD卡 SD卡,安全数字卡,体积小,容量大,存储速度块,支持热插拔。 二 SD卡存储容量 SD卡类型协议规范容量等级SDSCSD1.0上限至2GBSDHCSD2.02GB至32GBSDXCSD3.032GB至2TB 三 SD卡速度等级 标志串列数据写入速度UHS…

Socks5代理IP详解:优势与应用场景

Socks5代理IP作为网络代理技术的前沿选择,其在多方面的优势使其在2024年成为了热门选择。 一、Socks5代理IP的核心特性 1、Socks5代理IP与其他代理类型的比较 HTTP代理设计用于web浏览,仅支持HTTP和HTTPS协议。 Socks4代理支持更多类型的网络协议&…

【Python Scrapy】分布式爬虫利器

在当今信息爆炸的时代,获取大规模数据对于许多应用至关重要。而分布式爬虫作为一种强大的工具,在处理大量数据采集和高效爬取方面展现了卓越的能力。 本文将深入探讨分布式爬虫的实际应用场景,通过代码示例演示其在提升爬取效率、保障系统稳定…