当前位置: 首页 > news >正文

一个百度、必应搜索引擎图片获取下载的工具包

前言:前段时间需要一大批图片,跑去百度搜图下载,发现特别麻烦,于是用了一天时间写了一个工具库,方便后续使用,这里分享给大家

imagecapture 是一个用 Go 语言编写的库,旨在从百度和必应等搜索引擎捕获图片。它提供了一个接口,用于搜索和下载图片,并支持多种自定义选项。

项目地址

特性

  • 多引擎支持:支持百度、必应,后续将添加 Google 搜索。
  • 高级筛选:支持根据版权、图片尺寸、动图等进行筛选。
  • 并发抓取:使用并发抓取功能,提高图片抓取效率。
  • 去重功能:自动去重,确保返回的图片 URL 唯一。
  • 分页迭代功能:- 支持大批量图片的分页获取。。

安装

通过 go get 安装该工具包:

go get github.com/code-innovator-zyx/imagecapture

快速开始

初始化 BaiduCapture

package mainimport ("fmt""github.com/code-innovator-zyx/imagecapture""log"
)func main() {keyword := "美女"maxImageNums := 20// 新建一个百度图片捕获器  routineSize 限制协爬取的携程池数量baiduCapture := imagecapture.NewBaiduCapture(5)// 搜索图片urls, err := baiduCapture.SearchImages(keyword, maxImageNums)if err != nil {log.Fatalln(err.Error())}filename := "./beautiful"// 可以使用内置下载器下载图片   注:文件后缀会根据图片真是类型进行判断suffix, err := baiduCapture.Download(urls[0], filename, nil)if err != nil {log.Fatalln(err.Error())}fmt.Println(suffix)
}

初始化 BingCapture

package mainimport ("fmt""github.com/code-innovator-zyx/imagecapture""log"
)func main() {keyword := "美女"maxImageNums := 20// 新建一个必应图片捕获器  routineSize 限制协爬取的携程池数量bingCapture := imagecapture.NewBingCapture(5)// 搜索图片urls, err := bingCapture.SearchImages(keyword, maxImageNums)if err != nil {log.Fatalln(err.Error())}filename := "./beautiful"// 可以使用内置下载器下载图片   注:文件后缀会根据图片真是类型进行判断suffix, err := bingCapture.Download(urls[0], filename, nil)if err != nil {log.Fatalln(err.Error())}fmt.Println(suffix)
}

主要功能

SearchImages

用于在指定搜索引擎中根据关键词搜索图片。

参数
  • keyword (string): 搜索关键词。
  • maxNumber (int): 要返回的最多图片数量。
  • opts (Option): 可选参数,用于指定其他筛选条件(例如图片尺寸、是否高清、动图等)。
示例
// 使用 WithImageSize、WithHd 等选项来进行筛选
images, err := baiduCapture.SearchImages("sunrise", 20, imagecapture.WithHd(), imagecapture.WithImageSize(imagecapture.Medium))

RangeImages

用于在指定搜索引擎中根据关键词持续搜索图片。

参数
  • keyword (string): 搜索关键词。
  • callBack (func(string)bool): 每一批图片的回调函数。
  • opts (Option): 可选参数,用于指定其他筛选条件(例如图片尺寸、是否高清、动图等)。
示例
capture.RangeImages("老虎", func (urls []string) bool {
return true
})
if err != nil {
t.Error(err.Error())
return
}
})

更多案例

支持的筛选选项

仅百度搜索支持以下筛选选项:

1. WithCopyright()

过滤版权问题的图片,仅返回无版权限制的图片。

2. WithImageSize(size ImageSize)

限制搜索图片的大小。ImageSize 可以是以下几种:

  • Small:小尺寸
  • Medium:中等尺寸
  • Large:大尺寸
3. WithLatest()

搜索最新的图片,仅返回最近上传或更新的图片。

4. WithGif()

搜索动图,返回 .gif 格式的图片。

5. WithHd()

搜索高清图

图片去重

工具 内部会使用 map 来去重 URL,确保每个返回的 URL 唯一。这样可以避免重复图片 URL 出现在结果中。

配置

配置并发度

BaiduCaptureBingCapture 都可以通过传入并发数量来配置并发度,最多支持 6 个并发。

bingCapture := imagecapture.NewBaiduCapture(6) // 最大并发6

免责声明

本项目仅用于个人学习、研究和开发目的,禁止用于任何非法用途或商业用途。使用本 库 进行的所有操作和行为由用户自行承担风险。

  • 本 库 的图片抓取功能仅适用于合法的数据抓取用途,用户应遵守相关法律法规。
  • 本 库 使用的第三方图片搜索引擎(如百度、必应等)可能会随时更改其接口或数据访问策略,使用时需自行留意相关的变化。
  • 本项目不对通过 库 抓取的任何内容的版权、合法性等问题承担任何责任。

使用本库即表示用户同意并遵守上述条款。

相关文章:

一个百度、必应搜索引擎图片获取下载的工具包

前言:前段时间需要一大批图片,跑去百度搜图下载,发现特别麻烦,于是用了一天时间写了一个工具库,方便后续使用,这里分享给大家 imagecapture 是一个用 Go 语言编写的库,旨在从百度和必应等搜索引…...

安全见闻(网络安全篇)

笔记仅供学习,切勿触碰法律红线! 以下笔记学习来自B站泷羽Sec:https://space.bilibili.com/350329294?spm_id_from333.337.search-card.all.click 如涉及侵权马上删除文章 1.编程语言 C语言:一种通用的、面向过程的编程语言&am…...

手写一些方法

模拟new方法 function Otaku(name,age) {this.name name;this.age age; this.habit Games}Otaku.prototype.strength 60;Otaku.prototype.sayName function () {console.log("I am " this.name);};function myNew(fn, ...args) {const obj Object.create(f…...

仅需三步!用AI工具免费打造10w+抖音爆款烟火秀视频教程

抖音上的烟火秀视频总能唤起人们对节日的温馨回忆,它们不仅视觉效果震撼,还自带流量属性。我自己在刷到这类视频时,也不禁回想起童年放烟花的快乐时光,那种浓厚的年味让人怀念。这些视频通常伴随着合适的音乐,能够迅速…...

基于redis实现API接口访问次数限制

一,概述 日常开发中会有一个常见的需求,需要限制接口在单位时间内的访问次数,比如说某个免费的接口限制单个IP一分钟内只能访问5次。该怎么实现呢,通常大家都会想到用redis,确实通过redis可以实现这个功能&#xff0c…...

[ Linux 命令基础 3 ] Linux 命令详解-文件和目录管理命令

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…...

npm i 的时候报错: npm ERR! Error: EPERM: operation not permitted, rename

文章目录 噩梦解决办法总结 噩梦 最近改漏洞,这个项目删掉了 node_modules文件夹 重新安装依赖,结果安装一半的时候就一直报这个错。 然后查了很多方法,基本都是下面这些: 权限不够,以管理员运行cmd重新安装。清除 n…...

如何迁移剪映源文件

1、打开剪映,打开全局设置 2、查看草稿位置。把要迁移的文件拷贝到这个路径下面。 3、关闭文件,返回上一层界面,可以看到拷贝到目录下的文件。...

Go语言中的`io.Copy`函数:高效的数据复制解决方案

在Go语言中,io.Copy函数是一个强大而高效的工具,用于将数据从一个io.Reader复制到一个io.Writer。这篇文章将深入探讨io.Copy函数的工作原理、使用方法及其在实际应用中的优势。无论您是后端开发人员还是对Go语言感兴趣的程序员,这篇文章都将…...

datastage在升级版本到11.7之后,部分在11.3上正常执行的SP报错SQLSTATE = 22007: 本机错误代码 = -180

在升级版本到11.7之后,部分在11.3上正常执行的SP开始报错,报的SQL错误是时间参数问题,但是一样的SP可以直接call sp执行,也可以手动调用作业执行,只有设置定时调度时作业会报错, CALLXXX.XXX(1,CURRENT TIM…...

docker——项目部署

什么是Docker? Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可抑制的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器完全使用沙盒机制,相互之间不会存在任何接口。几…...

设计模式(Unity)——更新中

设计模式 文章目录 设计模式工厂模式创建方法(Create Methods)简单工厂(Simple Factory)工厂方法(Method Factory)抽象工厂(Abstract Factroy) 策略模式 工厂模式 创建方法&#xf…...

小程序中引入下载到本地的iconfont字体图标加载不出来问题解决

我这个是uniapp项目,字体图标都是一样的,在vue项目中web端、uniapp运行到h5都没问题,但是运行到小程序加载不出来,报错如下: 不让用本地路径,所以我们要转为base64编码,这里给大家提供一个工具,它可以把本地字体文件转为base64:transfonter 进入官网后,第一步: …...

百度富文本禁止编辑

<script type"text/javascript">$(function () {editorcontent new baidu.editor.ui.Editor();editorcontent.render(authentication);//禁用代码editorcontent.ready(function () {editorcontent.setDisabled();});try {editorcontent.sync();} catch (err) …...

C++开发基础之使用librabbitmq库实现RabbitMQ消息队列通信

1. 前言 RabbitMQ是一个流行的开源消息队列系统&#xff0c;支持多种消息协议&#xff0c;广泛用于构建分布式系统和微服务架构。可以在不同应用程序之间实现异步消息传递。在本文中&#xff0c;我们将熟悉如何使用C与RabbitMQ进行消息通信。 2. 准备工作 在 Windows 平台上…...

头歌网络安全(11.12)

头歌禁止复制解决 必须先下篡改猴&#xff01;&#xff01;&#xff01;&#xff01; 头歌复制助手 Educoder Copy Helperhttps://scriptcat.org/zh-CN/script-show-page/1860 Java生成验证码 第1关&#xff1a;使用Servlet生成验证码 任务描述 本关任务&#xff1a;使用se…...

洛谷 P1725 琪露诺(线段树优化dp)

题目链接 https://www.luogu.com.cn/problem/P1725 思路 我们令 d p [ i ] dp[i] dp[i]表示琪露诺移动到第 i i i个格子时能够获得的最大冰冻指数。 显然&#xff0c;状态转移方程为&#xff1a; d p [ i ] m a x ( d p [ i ] , d p [ k ] a [ i ] ) dp[i] max(dp[i],dp…...

【LeetCode】【算法】19. 删除链表的倒数第N个结点

LeetCode 19. 删除链表的倒数第N个结点 题目描述 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 思路 思路&#xff1a;快慢指针&#xff0c;快指针先移动n步&#xff0c;快慢指针再同时移动直到快指针到达链表末尾&#xff0c;此…...

Python爬虫 | 爬取豆瓣电影Top250的数据

简单记录一下&#xff0c;实现爬取豆瓣电影Top 250的数据。 这里我使用requests库来发送HTTP请求&#xff0c;以及BeautifulSoup库来解析HTML页面。 1.安装requests和BeautifulSoup库。 如果没有安装&#xff0c;可以通过以下命令安装&#xff1a; pip install requests bea…...

mac 中python 安装mysqlclient 出现 ld: library ‘ssl‘ not found错误

1. 出现报错 2. 获取openssl位置 brew info openssl 3. 配置环境变量&#xff08;我的是在~/.bash.profile&#xff09; export LDFLAGS"-L/opt/homebrew/Cellar/openssl3/3.4.0/lib" export CPPFLAGS"-I/opt/homebrew/Cellar/openssl3/…...

手机号码定位技术:从查询到地图可视化的完整解决方案

手机号码定位技术&#xff1a;从查询到地图可视化的完整解决方案 【免费下载链接】location-to-phone-number This a project to search a location of a specified phone number, and locate the map to the phone number location. 项目地址: https://gitcode.com/gh_mirro…...

Cloudflare四重验证机制与行为建模反爬原理深度解析

1. 这不是“绕过Cloudflare”&#xff0c;而是重新理解“人机边界”的实战现场最近两周&#xff0c;我连续接手了三个爬虫项目&#xff0c;全卡在同一个地方&#xff1a;Cloudflare的“Checking your browser before accessing...”页面。不是5秒跳转失败&#xff0c;就是直接返…...

Exchange渗透实战:从外部侦察到域控接管全链路

1. 这不是“黑进邮箱”的速成课&#xff0c;而是真实红队作业的切片回放Exchange Server 渗透测试&#xff0c;这个词在很多刚入行的朋友眼里&#xff0c;可能等同于“爆破邮箱密码”“下载邮件”“发钓鱼邮件”。但我在过去七年参与的23次企业红队评估中&#xff0c;真正能从外…...

告别GRUB安装失败:Ubuntu 22.04单硬盘安装最全避坑指南(MBR/EFI详解)

Ubuntu 22.04单硬盘安装终极指南&#xff1a;从MBR到UEFI的GRUB避坑手册当你满怀期待地将Ubuntu 22.04安装U盘插入电脑&#xff0c;却在最后关头遭遇"无法将GRUB安装到/dev/sda"的红色警告时&#xff0c;那种挫败感我深有体会。这不是简单的安装失败&#xff0c;而是…...

特征函数损失:频域视角解决机器学习分布偏移问题

1. 项目概述在机器学习项目的实际落地过程中&#xff0c;我们常常会遇到一个令人头疼的“幽灵”&#xff1a;模型在精心准备的训练集上表现优异&#xff0c;但一到真实的生产环境&#xff0c;性能就出现断崖式下跌。这个幽灵就是“分布偏移”。无论是计算机视觉、自然语言处理还…...

基于经典机器学习模型的GitHub代码审查评论情感分析实践

1. 项目概述&#xff1a;为什么我们需要分析代码审查评论的情感&#xff1f;在软件开发的日常协作中&#xff0c;代码审查&#xff08;Code Review&#xff09;是保证代码质量、促进知识共享和团队协作的核心环节。然而&#xff0c;审查过程不仅仅是技术逻辑的校验&#xff0c;…...

机器学习在天文大数据中的应用:自动化分类近邻星系百万恒星

1. 项目概述&#xff1a;当机器学习遇见近邻星系的大质量恒星在浩瀚的宇宙中&#xff0c;大质量恒星&#xff08;通常指质量超过8倍太阳质量的恒星&#xff09;是名副其实的“宇宙引擎”。它们虽然数量稀少&#xff0c;但通过强烈的星风和最终的超新星爆发&#xff0c;深刻地影…...

UE5 CPU瓶颈定位实战:用ProfileCPU精准揪出Game线程卡顿根因

1. 这不是“点开就看”的性能分析&#xff0c;而是UE5里真正能救命的CPU瓶颈定位术在UE5项目做到中后期&#xff0c;你肯定经历过那种“明明没加多少新功能&#xff0c;帧率却从60掉到35&#xff0c;Editor卡得像PPT”的窒息时刻。打开Stat Unit&#xff0c;看到Game线程时间飙…...

8051单片机16位SFR访问原理与安全实践

1. 16位特殊功能寄存器&#xff08;SFR&#xff09;的基础概念在8051单片机开发中&#xff0c;特殊功能寄存器&#xff08;Special Function Register&#xff0c;简称SFR&#xff09;是CPU与外围设备交互的关键接口。标准的8位SFR使用sfr关键字定义&#xff0c;而16位SFR则需要…...

别急着重装系统!记一次 Ubuntu 22.04 上 gcc 与 cpp 版本依赖冲突的排查与修复实录

从依赖地狱到编译自由&#xff1a;Ubuntu 22.04下gcc与cpp版本冲突的深度修复指南那天下午&#xff0c;当我正准备为新的C项目搭建开发环境时&#xff0c;终端里那行刺眼的红色错误提示让我的咖啡瞬间不香了。作为一个自诩"Linux老司机"的开发者&#xff0c;我没想到…...