背景:通过python脚本多线程从《https://wallhaven.cc》壁纸网站批量下载图片,如果下载其它站点请调整html结构。

系统环境:windows10

python版本:3.8

完整脚本如下:

# -*- coding: UTF-8 -*-
import time
from queue import Queue
from requests_html import HTMLSession
import requests
import threadingnow = time.time()
get_links_list = []
session = HTMLSession()# url_1 用于获取当前图片页码,urls2为当前页码
url_1 = 'https://wallhaven.cc/search?q=id%3A24972&sorting=random&ref=fp&seed=WbEycL&page=2'
urls2 = 'https://wallhaven.cc/search?q=id%3A24972&sorting=random&ref=fp&seed=WbEycL&page='# 需要爬取的页面,30为爬取的内容至30页,如果小于30页则获取所有页码图片
page_number = 30# 保存图片至指定页面
def save_image(url, title):img_response = requests.get(url)with open('.\Wallpapers\\'+title+'.png', 'wb') as file:file.write(img_response.content)# 获取页码数
def get_page(url_1):r = session.get(url_1)news = r.html.find('div > section > header > h2')for new in news:page1 = new.textif 'Page' in page1:page2 = str(page1).split(' ')[-1]return page2# 获取图片下载连接
def get_picturs_url(page, urls2):page = int(page)if page <= page_number:print(f'当前页码数是:{page} ')for page1 in range(page):url = f'{urls2}{page1}'r = session.get(url)news = r.html.find('div > section > ul > li > figure > a')for new in news:get_links_list.append(str(new.absolute_links).replace('\'', '').replace('{', '').replace('}', ''))else:for page2 in range(page_number):url = f'{urls2}{page2}'r = session.get(url)news = r.html.find('div > section > ul > li > figure > a')for new in news:get_links_list.append(str(new.absolute_links).replace('\'', '').replace('{', '').replace('}', ''))return get_links_list# 下载图片
def get_picture(links, output_q):r = session.get(links)items_img = r.html.find('body > main > section > div > img')for imgs in items_img:url = imgs.attrs['src']title = imgs.attrs['data-wallpaper-id']print(url + title)save_image(url, title)# 通过多线程调用下载函数
if __name__ == '__main__':page = get_page(url_1)get_picturs_url(page, urls2)for links in get_links_list:time.sleep(2)t = threading.Thread(target=get_picture, args=(links, Queue()))t.start()print(time.time() - now)

模块安装:

pip install requests-html
pip install requests

参考文档:

https://docs.python-requests.org/projects/requests-html/en/latest/

https://docs.python-requests.org/en/latest/

python批量下载图片相关推荐

  1. 教你怎么使用python批量下载图片

    教你怎么使用python批量下载图片 文章目录 教你怎么使用python批量下载图片 前言 一.运行环境 1. win10 2. python==3.7.2 二.需要用到的参数 1. download ...

  2. 如何使用Python批量下载图片

    爬虫程序在采集网页的过程中,需要从网上下载一些图片,比如表情包.壁纸.素材等,如果图片的数量很多,这样做就会非常麻烦和耗时.那么有没有更方便快捷的方法呢?答案是肯定的.我们可以利用Python编程语言 ...

  3. 用python批量下载网络图片_使用python批量下载图片吗?怎么做?

    没想到吧,我们居然可以用python去下载图片,关于单个下载内容,之前已经出了教程告诉大家,大家应该都知道,图片跟文字似的,经常多个发布,我们如果想得到很多个图片,还得一个代码或者一个图片源的去敲击吗 ...

  4. python 批量下载图片_Python 批量下载图片示例

    使用Python find函数和urllib下载图片. A:#!/usr/bin/env python import time import urllib i = 0 url = ['']*10 na ...

  5. python下载网页里面所有的图片-python批量下载图片的三种方法

    有三种方法,一是用微软提供的扩展库win32com来操作IE,二是用selenium的webdriver,三是用python自带的HTMLParser解析.win32com可以获得类似js里面的doc ...

  6. 用python批量下载网络图片_用python批量下载图片

    在网上找的,单线程,下载速度不错 #!/usr/bin/env python # coding=utf-8 import json import itertools import urllib imp ...

  7. python下载网页里面所有的图片-Python批量下载网页图片详细教程

    很多朋友在网上查找批量下载图片的方法~发觉挺凌乱的,无从下手.这里绿茶小编就来跟大家分享下使用Python批量下载图片方法. 目标:爬取某个网站上n多页的链接,每个链接有n多张图片,每一页对应一个文件 ...

  8. python批量下载网页文件-Python批量下载网页图片详细教程

    目标:爬取某个网站上n多页的链接,每个链接有n多张图片,每一页对应一个文件夹,每个文件夹包含n个链接所对应的文件夹. 步骤1:获得网页的所有链接,访问所有链接,获得链接里的图片地址. 步骤2:根据图片 ...

  9. 2021-03-10 Python多线程爬虫快速批量下载图片

    Python多线程爬虫快速批量下载图片 1.完成这个需要导入的模块 urllib,random,queue(队列),threading,time,os,json 第三方模块的安装 键盘win+R,输入 ...

最新文章

  1. 结对编程——单元测试
  2. 让大家都成为电脑高手之二------运行_r篇
  3. Spring –添加Spring MVC –第2部分
  4. Android备份onedrive,三星Note10正将OneDrive集成到Android相册应用中
  5. 首批拟科创板IPO名单今日揭晓!
  6. iOS 13-Sign In with Apple
  7. 老话长谈:通过windows下共享看第六代青年
  8. OpenCV-美食—巧克力滤镜
  9. java多继承_为什么 Java 不支持类多重继承?
  10. 来自汽车行业的20个优秀的汽车推广网站
  11. MFC操作Access数据库
  12. matlab线型与颜色
  13. 取消计算机触摸板,笔记本电脑触摸板,教您笔记本电脑触摸板怎么关闭
  14. 智能电导率系统电路设计详解
  15. 服务器2003系统密钥,服务器2003系统密钥
  16. 大学计算机实验报告答案 南京理工大学,南京理工大学微机实验报告
  17. Codeforces Gym 101086 M ACPC Headquarters : AASTMT (Stairway to Heaven)
  18. 网易我的世界android苹果,我的世界Minecraft中国版官方网站——你想玩的,这里都有...
  19. 【Vue】移动端图片裁剪组件--vue-imgcut
  20. java 学习网站_Java学习必不可少的十大网站

热门文章

  1. 闲鱼卖货,月入1.5w的小众类目分享。
  2. 面试官:什么是责任链模式?
  3. Wavefront OBJ 转换成OpenGL ES使用的C/C++文件
  4. 一时语噻:二面鹅厂,面试官问出Nginx你了解吗?
  5. (NO.00004)iOS实现打砖块游戏(一):素材的制作
  6. 名帖04 李阳冰 篆书《城隍庙碑》
  7. 第十五周 内部排序一(2)验证交换排序
  8. 多模态语义检索 | 基于 MetaSpore 快速部署 HuggingFace 预训练模型
  9. 2019年9月Leetcode每日训练日志
  10. java 二维卡尔曼滤波_卡尔曼滤波 – Kalman Filtering