线程池下载4K壁纸

news2024/10/6 20:28:17

学习记录

学习记录

一、目标

aHR0cHM6Ly9waWMubmV0Ymlhbi5jb20vDQo=

 拿到每张图片的href 和 标题,跳转到详情页进行图片下载地址的提取并请求实现图片本地下载

二、代码实现

"""
CSDN: 抄代码抄错的小牛马
mailbox:yxhlhm2002@163.com
"""
import os
import time
from concurrent.futures import ThreadPoolExecutor, ProcessPoolExecutor

import requests
from lxml import etree

from userAgentPooL import userAgent
from ipPooL import IP

UA = userAgent.get_ua()


def get_data(url):
    start = time.time()
    futures = []
    # 创建 20 个线程池 with as 不用手动关闭
    with ThreadPoolExecutor(max_workers=20) as pool:
        # with ProcessPoolExecutor(max_workers=20) as pool:
        for i in url:
            headers = {
                'User-Agent': UA,
                'Referer': 'https://www.igdcc.com/'
            }
            print(f'主页:{headers["User-Agent"]}')
            proxies = IP.get_ip()
            resp = requests.get(url=i, headers=headers, proxies=proxies)
            print(resp)
            resp.encoding = 'gbk'
            content = resp.text

            tree = etree.HTML(content)
            li_list = tree.xpath('//div[@class="slist"]/ul[@class="clearfix"]/li')

            for item in li_list:
                headers = {
                    'User-Agent': UA,
                    'Referer': 'https://pic.netbian.com/'
                }
                href = 'https://pic.netbian.com/' + item.xpath('./a/@href')[0]

                proxies = IP.get_ip()

                img_HTML = requests.get(url=href, headers=headers, proxies=proxies)
                img_HTML.encoding = 'gbk'
                img_data = img_HTML.text
                new_tree = etree.HTML(img_data)
                src = 'https://pic.netbian.com/' + new_tree.xpath('//div[@class="photo-pic"]/a/img/@src')[0]
                title = new_tree.xpath('//div[@class="view"]/div[2]/a/img/@alt')[0]
                # 将耗时的任务放到线程池中来执行
                f = pool.submit(download, src=src, title=title)
                futures.append(f)
    for f in futures:
        f.result()
    print('一共花费时间', time.time() - start)


def download(src, title):
    img_content = requests.get(url=src).content
    if not os.path.exists('./ThreadpicPool'):
        os.mkdir('./ThreadpicPool')
    with open('./ThreadpicPool/%s.jpg' % title, 'wb') as fp:  # wb 是写入二进制的,图片是二进制。
        fp.write(img_content)
    print('{%s}下载成功!!!' % title)

    pass


def main():
    print('----------------彼岸图网壁纸采集----------------')
    star_page = int(input('请输入起始页:'))
    end_page = int(input('请终止起始页:'))
    url = []
    for page in range(star_page, end_page + 1):
        if end_page == 1:
            url.append('https://pic.netbian.com/index.html')
            break
        else:
            if page == 1:
                url.append('https://pic.netbian.com/index.html')
            else:
                url.append(f' https://pic.netbian.com/index_{page}.html')

    get_data(url)

    pass


if __name__ == '__main__':
    main()

效果:

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

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

相关文章

计算机毕业论文内容参考|基于java的房产营销系统的设计与实现

文章目录 导文摘要前言绪论课题背景课题内容相关技术与方法介绍技术分析技术设计技术实现总结与展望本文总结后续工作展望导文 计算机毕业论文内容参考|基于java的房产营销系统的设计与实现 摘要 当今社会,随着经济的快速发展和人们对生活品质的不断提高,房地产行业正在面临…

Java --- docker安装redis

目录 一、拉取redis容器镜像 二、新建目录 三、拷贝redis.conf文件模板进/app/redis目录 四、修改redis.conf文件 五、启动redis镜像服务 一、拉取redis容器镜像 docker pull redis:7.0.0 二、新建目录 mkdir -p /app/redis 三、拷贝redis.conf文件模板进/app/redis目录 cp …

Java面试(4)面向对象

文章目录 概念1. 面向对象和面向过程的区别2. 面向对象三大特征 类1. 接口和抽象类有什么共同点和区别?2. 深拷贝和浅拷贝区别了解吗?什么是引用拷贝?3. 内部类1. 内部类2. 内部类的优点3. 内部类有哪些应用场景4. 局部内部类和匿名内部类访问…

python 3.8 + tensorflow 2.4.0 + cuda11.0 的问题

版本匹配 🔗从源代码构建 | TensorFlow 报错:Could not load dynamic library ‘cupti64_110.dll’; dlerror: cupti64_110.dll not found 是因为我电脑中的 cuda 版本以前是 10,现在是 11.4 ,所以需要安装对应版本的 cudatoolk…

基于粒子群算法的微网经济优化调度——附Matalb代码

目录 摘要: 代码主要内容: 研究背景: 微电网模型: 粒子群算法: 运行结果: Matlab代码分享: 摘要: 提出了一种经济与环保相协调的微电网优化调度模型,针对光伏电池…

SAP入门到放弃系列之需求管理的基本要素

需求管理目标: 一般而言,生产计划(PP)的总体目标,特别是需求管理的总体目标是通过减少以下内容来更好地为客户服务: 补货提前期存货成本 需求管理的要素: 需求管理工作的主要要素广义上可分…

2013蓝桥杯真题省赛翻硬币 C语言/C++

[蓝桥杯 2013 省 B] 翻硬币 题目背景 小明正在玩一个“翻硬币”的游戏。 题目描述 桌上放着排成一排的若干硬币。我们用 * 表示正面,用 o 表示反面(是小写字母,不是零),比如可能情形是 **oo***oooo,如果…

暴涨700w播放,星穹铁道恰饭频频登上B站爆款热榜!

B站作为现在年轻一代聚集的多元化社区,游戏内容则是社区内受众较为广泛的存在,而星铁作为面向年轻群体的回合制游戏,自然是赢得B站核心用户群体的青睐。 4月26日,暌违已久的手游《崩坏:星穹铁道》(后文简称…

【Java】平时开发中遇到的问题你是否遇到过?

文章目录 前言一、六类典型空指针问题1.1包装类型的空指针问题1.2 级联调用的空指针问题1.3 Equals方法左边的空指针问题1.4 ConcurrentHashMap 这样的容器不支持 Key,Value 为 null。1.5 集合,数组直接获取元素1.6 对象直接获取属性 二、日期YYYY格式设…

Linux和UNIX的关系及区别(详解)

UNIX 与 Linux 之间的关系是一个很有意思的话题。在目前主流的服务器端操作系统中,UNIX 诞生于 20 世纪 60 年代末,Windows 诞生于 20 世纪 80 年代中期,Linux 诞生于 20 世纪 90 年代初,可以说 UNIX 是操作系统中的"老大哥&…

Fortinet FortiNAC RCE漏洞复现(CVE-2022-39952)

0x01 产品简介 FortiNAC(Network Access Control) 是Fortinet的一种零信任网络访问控制解决方案,可增强用户对企业网络上的物联网 (IoT) 设备的监控。NAC 是零信任网络访问安全模型的重要组成部分,在该模型中,IT 团队可以轻松了解正在访问网络…

低代码让开发变得不再复杂

文章目录 前言低代码 VS 传统开发为什么选择IVX?平台比对总结 前言 在数字化的时代背景下,企业都面临巨大的数字化转型的挑战。为了应对这样的挑战,企业软件开发工具和平台也在不断革新和发展。低代码开发平台随之应运而生,成为了…

面向对象编程与面向过程编程的区别

面向过程: 以坦克飞机大战为例,如果按面向过程的思路去书写代码,则需要按如下顺序进行编码: 游戏初始化确定一台坦克的位置绘制坦克确定多架飞机的位置绘制飞机为坦克设置上下左右四个转向为坦克添加按下键盘k键发射子弹为所有飞…

ATFX国际:国内成品油价格下调,国际油价仍维持震荡态势

ATFX国际:5月16日,发改委发布成品油价格下调通知,其中提到:国内汽、柴油价格每吨分别降低380元和365元。以上海地区为例,价格下调后,每吨汽油的售价为9255元,每吨柴油的价格为8225元。经计算&am…

【容器适配器的认识与模拟】

目录: 前言一、引入二、容器适配器(一)stackdequestack模拟实现 (二)queuequeue模拟实现为什么栈和队列要使用deque (三)priority_queuepriority_queue模拟实现 总结 前言 打怪升级&#xff1a…

小程序获取用户信息实现一键登录

文章目录 旧版获取用户信息实现登录流程login页面代码个人中心页面代码全局app.vue代码下面是小程序获取用户信息最新调整的方式 温馨提示 :以下小程序登录方式只适用于2.27.1版本库以下使用 详情请看微信官方文档调整 旧版获取用户信息实现登录流程 由于我是在hbu…

公司招了一个腾讯拿30K的人,让我见识到了什么是天花板···

前言 人人都有大厂梦,对于软件测试人员来说,BAT 为首的一线互联网公司肯定是自己的心仪对象,毕竟能到这些大厂工作,不仅薪资高待遇好,而且能力技术都能够得到提升,最关键的是还能够给自己镀上一层金&#…

Linux系统防火墙iptables(你委屈什么,爱而不得的又不止你一个)

文章目录 一、iptables防火墙概述1.简介2.netfilter/iptables关系3.iptables的四表五链(1)四表(2)五链 4.数据包过滤的匹配流程(1)入站(2)转发 二、iptables防火墙配置1.下载相关服务…

一个有点好用的信息收集工具

功能 domainscan 调用 subfinder 被动收集,调用 ksubdoamin 进行 dns 验证 泛解析、CDN 判断 获取 domain 相关的 web(host:port)资产,使用 webscan 扫描 webscan 支持 http/https scheme 自动判断 获取 statusCode、contentL…

OpenAI新作Shap-e算法使用教程

一、知识点 Shap-e是基于nerf的开源生成3d模型方案。它是由如今热火朝天的Open AI公司(chatgpt,Dell-E2)开发、开源的。Shap-e生成的速度非常快,输入关键词即可生成简单模型(限于简单单体模型)。 二、环境…