「兔了个兔」看我如何抓取兔兔图片到本地(附源码)

news2024/11/28 8:28:18

在这里插入图片描述

💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后端的开发语言ABAP,SQL进行任务的完成,对SAP企业管理系统,SAP ABAP开发和数据库具有较深入的研究。


💅文章概要: 各位小伙伴们大家好呀!你是否还在为寻找不到合适的配图而苦恼呢?本篇文章主要讲解一下如何抓取网站图片到本地, 从而实现快速找图的需求。希望能帮助到大家!


🤟每日一言: 永远年轻,永远热泪盈眶!


文章目录

  • 前言
  • PYTHON环境配置
  • 库的安装
    •  CMD安装
  • 代码实现
  • 代码修改部分
    •  抓取图片单组数量设置
    •  抓取图片组别数量设置
    •  图片存储路径
  • 实现效果
  • 写在最后的话


前言

各位小伙伴们大家好呀!瑞兔呈祥吗,你是否还在为寻找不到合适的兔兔配图而苦恼呢?本篇文章主要讲解一下如何抓取兔兔图片到本地, 从而实现快速找图的需求。希望能帮助到大家!


PYTHON环境配置

  首先我们要进行Python的开发环境配置,这里我选用的是一款轻量小巧的跨平台开源集成开发环境:Geany

PS:关于Python如何配置Geany集成开发环境在笔者这篇文章中介绍地很详细了,不会地小伙伴可以阅览;或者使用其他的开发环境也是完全没有任何问题的!

【PYTHON】如何配置集成开发环境Geany在这里插入图片描述


库的安装

在此Python爬虫中我们需要用到5个库:它们分别如下是:

  • requests
  • json
  • urllib
  • os
  • time

 CMD安装

  (一)进入cmd命令提示符

在这里插入图片描述

  (二)输入安装代码

pip install 库的名称

PS::ostime一般来说不需要进行安装,python3环境中会自带。


代码实现

# -*- coding:utf8 -*-
import requests
import json
from urllib import parse
import os
import time


class BaiduImageSpider(object):
    def __init__(self):
        self.json_count = 0  # 请求到的json文件数量(一个json文件包含30个图像文件)
        self.url = 'https://image.baidu.com/search/acjson?tn=resultjson_com&logid=5179920884740494226&ipn=rj&ct' \
                   '=201326592&is=&fp=result&queryWord={' \
                   '}&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=&ic=0&hd=&latest=&copyright=&word={' \
                   '}&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&fr=&expermode=&nojc=&pn={' \
                   '}&rn=30&gsm=1e&1635054081427= '
        self.directory = r"C:\Users\86180\Desktop\素材\python素材\爬虫测试\{}"  # 存储目录  这里需要修改为自己希望保存的目录  {}不要丢
        self.header = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
                          'Chrome/95.0.4638.54 Safari/537.36 Edg/95.0.1020.30 '
        }

    # 创建存储文件夹
    def create_directory(self, name):
        self.directory = self.directory.format(name)
        # 如果目录不存在则创建
        if not os.path.exists(self.directory):
            os.makedirs(self.directory)
        self.directory += r'\{}'

    # 获取图像链接
    def get_image_link(self, url):
        list_image_link = []
        strhtml = requests.get(url, headers=self.header)  # Get方式获取网页数据
        jsonInfo = json.loads(strhtml.text)
        for index in range(30):
            list_image_link.append(jsonInfo['data'][index]['thumbURL'])
        return list_image_link

    # 下载图片
    def save_image(self, img_link, filename):
        res = requests.get(img_link, headers=self.header)
        if res.status_code == 404:
            print(f"图片{img_link}下载出错------->")
        with open(filename, "wb") as f:
            f.write(res.content)
            print("存储路径:" + filename)

    # 入口函数
    def run(self):
        searchName = "兔兔"
        searchName_parse = parse.quote(searchName)  # 编码

        self.create_directory(searchName)

        pic_number = 0  # 图像数量
        for index in range(self.json_count):
            pn = (index+1)*30
            request_url = self.url.format(searchName_parse, searchName_parse, str(pn))
            list_image_link = self.get_image_link(request_url)
            for link in list_image_link:
                pic_number += 1
                self.save_image(link, self.directory.format(str(pic_number)+'.jpg'))
                time.sleep(0.2)  # 休眠0.2秒,防止封ip
        print(searchName+"----图像下载完成--------->")


if __name__ == '__main__':
    spider = BaiduImageSpider()
    spider.json_count = 10  # 定义下载10组图像,也就是三百张
    spider.run()



代码修改部分

在这里插入图片描述

  默认代码为一次抓取10组图片每组30张。若想一次性设置图片抓取数量多少,则进行以下修改:

 抓取图片单组数量设置

  上述代码默认一组的抓取数量为30张,所想设置单组的图片抓取数量,则将下图所框选处30修改成自己想要的数量

在这里插入图片描述

 抓取图片组别数量设置

  上述代码默认一次抓取的图片组的数量为10组,所想自己设置图片抓取的组别数量,则将下图所框选处10修改成自己想要的数量

在这里插入图片描述

 图片存储路径

  将下方的图片存储路径修改为自己的存储路径,抓取的图片将自动保存到该文件夹中,如果不存在改文件夹则会自动创建

image.png


实现效果

image.png


写在最后的话

  本文花费大量时间介绍了如何抓取网站兔兔图片到本地,希望能帮助到各位小伙伴,码文不易,还望各位大佬们多多支持哦,你们的支持是我最大的动力!

在这里插入图片描述

原创不易,还希望各位大佬支持一下 \textcolor{blue}{原创不易,还希望各位大佬支持一下} 原创不易,还希望各位大佬支持一下

👍 点赞,你的认可是我创作的动力! \textcolor{9c81c1}{点赞,你的认可是我创作的动力!} 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向! \textcolor{ed7976}{收藏,你的青睐是我努力的方向!} 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富! \textcolor{98c091}{评论,你的意见是我进步的财富!} 评论,你的意见是我进步的财富!

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

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

相关文章

如何在IDEA中使用Maven构建Java项目?Maven的使用详细解读

文章目录1. 前言2. IDEA 中配置 Maven 环境3. Maven 的坐标问题4. IDEA 中创建 Maven 项目5. IDEA 中导入 Maven 项目6. 安装插件7. 依赖管理8. 依赖范围6. 总结Java编程基础教程系列1. 前言 前面在如何使用 Maven 构建 Java 项目一文中,我们一直在命令行中执行构建…

LabVIEW什么是实时操作系统(RTOS)

LabVIEW什么是实时操作系统(RTOS)一般而言,操作系统的任务是管理计算机的硬件资源和应用程序。实时操作系统会执行这些任务,但是运行时间精度和可靠度都极高。在实际应用中,有的系统失常代价高昂,甚至会引起安全事故。这时&#x…

成为提示专家,AI艺术杂志:AI Unleashed 第一期

shadow最近发现了一期AI艺术的杂志。名称叫 AI Unleashed,是一本深入探索 AI 和想象力的杂志。每期杂志都将填满精彩的 AI 艺术,激发你的好奇心, 让你更加了解最新的 AI 技术,以及它如何改变现有工作流和我们对艺术和技术的看法。…

LVS+keepalived(双主)+Nginx实现高可用负载均衡

#为什么采用双主架构: 单主架构只有一个keepalived对外提供服务,该主机长期处于繁忙状态,而另一台主机却很空闲,利用率低下 #双主架构的优点: 即将两个或以上VIP分别运行在不同的keepalived服务器,以实现…

C++11使用线程类thread的方法

C11 之前,C 语言没有对并发编程提供语言级别的支持。如果需要使用线程,windows系统需要使用CreateThread函数创建线程,而linux需要使用pthread库使用线程。C11 中增加了线程以及线程相关的类,很方便地支持了并发编程。由于可以跨平…

活动星投票十大商业品牌网络评选微信的投票方式线上免费投票

“十大商业品牌”网络评选投票_线上系统免费投票_功能齐全的视频投票_在线投票免费小程序用户在使用微信投票的时候,需要功能齐全,又快捷方便的投票小程序。而“活动星投票”这款软件使用非常的方便,用户可以随时使用手机微信小程序获得线上投…

CV学习笔记-VGG

VGG 1. 常见的卷积神经网络 VGG属于一种经典的卷积神经网络结构,其出现在AlexNet之后,由于AlexNet的突破证实了卷积神经网络的可行性,VGG的思路主要是将网络层数加深,从某种意义上说,网络层数的加深可以粗略地认为考虑…

编译原理学习笔记14——属性文法与语法制导翻译1

编译原理学习笔记14——属性文法与语法制导翻译114.1 属性文法14.2 属性计算14.1 属性文法 属性文法 综合属性 自下而上传递信息语法规则:根据右 部候选式中的符号 的属性计算左部被 定义符号的综合属性语法树:根据子结 点的属性和父结点 自身的属性…

【日常系列】LeetCode《30·动态规划总结》

动态规划总结 线性动态规划问题总结 打家劫舍总结 最大子数组和总结 dp[i] 依赖于前面一个或者两个状态 dp[i] 依赖于前面多个状态 注意:子序列可以不连续 dp[i] 带有一个或者多个维度 输入为两个数组或者两个字符串 lc 10【剑指 19】【top100】:正…

【LeetCode每日一题:2309. 兼具大小写的最好英文字母~~~模拟+Hash表+贪心】

题目描述 给你一个由英文字母组成的字符串 s ,请你找出并返回 s 中的 最好 英文字母。返回的字母必须为大写形式。如果不存在满足条件的字母,则返回一个空字符串。 最好 英文字母的大写和小写形式必须 都 在 s 中出现。 英文字母 b 比另一个英文字母 …

Java生成微信小程序二维码,5种实现方式,一个比一个简单

文章目录前言先看官网一、JDK自带的URLConnection方式二、Apache的HttpClient方式三、okhttp3方式四、Unirest方式五、RestTemplate方式其它细节getAccessToken构建参数mapbyte[]数组源码下载前言 先介绍一下项目场景,主要是通过微信小程序二维码裂变分享&#xff…

一时重构一时爽,一直重构一直爽

笔者(后台技术汇)恭祝各位大佬:2023年春节快乐,兔年祥瑞。距离上次更新,已经过去5个月有余了,有小伙伴疑惑笔者是不是删库跑路了..其实不是,这段时间是在参加一次比较大的项目重构(目…

学习笔记 —— python代码耗时及内存占用测试方法

1、手写耗时测试 先看结果; 主要有三种方法,各自的时钟间隔如下: time.time() timeit time.time_ns() ( time is outputted in ns!). 可见方法2,即timeit 的时钟间隔最短。 注:最后一个是以ns为单位的,前两个是…

二叉树的概念与结构

文章目录前言一、树的概念及结构1.树的概念2.树的相关概念3.树的表示4. 树在实际中的运用二、二叉树概念及结构1.概念2.特殊的二叉树5.二叉树的性质6.二叉树的存储结构(1).顺序存储(2).链式存储结语前言 因为二叉树的知识点太多,一篇文章讲不…

《真象还原》读书笔记——第一章 部署工作环境

环境: 由于平时使用 windows 系统 所以 linux 环境 使用了 linux子系统。 $ cat /proc/version Linux version 4.4.0-22000-Microsoft (MicrosoftMicrosoft.com) (gcc version 5.4.0 (GCC) )1.1 工欲善其事 必先利其器 操作环境很重要呀。 1.2 编译器 GCC: gc…

Java 23种设计模式(8.结构型模式-桥接模式)

结构型模式-桥接模式 代码分析 类图 代码 public interface Implementor {void operation(); }public class ConcreteImplementorA implements Implementor{Overridepublic void operation() {System.out.println("A");} }public class ConcreteImplementorB imple…

(Java高级教程)第四章必备前端基础知识-第二节3:CSS盒模型和浮动

文章目录一:盒模型(1)border(2)padding(3)margin二:flex布局一:盒模型 盒模型:在HTML中,每个标签(或元素)相当于是一个盒…

DaVinci:色彩匹配

z调色页面:色彩匹配Color:Color Match色彩匹配 Color Match调板是专业的一级调色工具,专门用于对视频图像进行精准的校色还原。色彩匹配时,先定位到视频中持有色卡的画面。在检视器左下角快捷菜单中选择“色卡” Color Chart工具&…

C 语言零基础入门教程(十二)

C enum(枚举) 枚举是 C 语言中的一种基本数据类型,它可以让数据更简洁,更易读。 枚举语法定义格式为: enum 枚举名 {枚举元素1,枚举元素2,……};接下来我们举个例子,比如:一星期有 7 天,如果不用枚举&…

【Linux】vim编辑器的使用

文章目录vim的基本概念vim指令集复制粘贴撤销、剪切光标定位vim的基本概念 vim是一款多模式的编辑器,在我们常用的模式有3~5种。分别是命令模式(command mode)、插入模式(Insert mode)和底行模式( last lin…