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

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

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

项目地址

特性

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

安装

通过 go get 安装该工具包:

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

快速开始

初始化 BaiduCapture

package main

import (
	"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 main

import (
	"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

免责声明

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

关于CountDownLatch失效问题

一、项目背景 这几天要开发一个类似支付宝那种年度账单统计的功能,就是到元旦后支付完会把用户这一年的消费情况从各个维度(我们把这一个维度称作一个指标)统计分析形成一张报告展示给用户。 这个功能实现用到了CountDownLatch。假如统计分析…

【专题】2024年全球生物医药交易报告汇总PDF洞察(附原数据表)

原文链接:https://tecdat.cn/?p38191 在当今复杂多变的全球经济环境下,医药行业正面临着诸多挑战与机遇。2024 年,医药行业的发展态势备受关注。 一方面,全球生物医药交易活跃,2021 - 2023 年的交易中,已…

鸿蒙5.0时代:原生鸿蒙应用市场引领开发者服务新篇章

前言 10月22日原生鸿蒙之夜发布会宣布HarmonyOS NEXT正式发布,首个版本号:鸿蒙5.0。这次“纯血鸿蒙”脱离了底层安卓架构成为纯国产的独立系统,仅凭这一点就有很多想象空间。 目前鸿蒙生态设备已超10亿,原生鸿蒙操作系统在中国市…

3.PyCharm工具

第三方IDE,集成开发工具,官网下载。 社区版本,免费使用。 创建项目 配置解释器,创建python文件,编写代码,运行:

arkUI:Flex弹性布局的各个属性

arkUI:Flex弹性布局的简单使用 1 主要内容说明2 相关内容2.1 Flex弹性布局的方向2.1.1 源码1的简答说明2.1.2 源码1 (Flex弹性布局的方向)2.1.3 源码1运行效果2.1.3.1 当direction: FlexDirection.RowReverse2.1.3.2 当direction: FlexDirect…

串口接收,不定长数据接收

###1.CUBE-MX配置串口 2.我采用串口中断接收,打开中断接口 3.时钟同样8倍频,1分频,使用内部时钟 打开串口中断 main() { __HAL_UART_ENABLE_IT(&huart1, UART_IT_IDLE); // 启用空闲中断__HAL_UART_ENABLE_IT(&huart1, UART_IT_R…

TikTok本土店vs跨境店:解读TikTok小店差异

TikTok小店的两种主要的店铺类型:本土店和跨境店,虽然这两种店铺在功能上有相似之处,但它们在运营模式、市场定位、目标受众和面临的挑战等方面存在显著的区别。 一、定义与基本特征 1. TikTok本土店 本土店指的是在特定国家或地区内经营的…

深度学习——优化算法、激活函数、归一化、正则化

文章目录 🌺深度学习面试八股汇总🌺优化算法方法梯度下降 (Gradient Descent, GD)动量法 (Momentum)AdaGrad (Adaptive Gradient Algorithm)RMSProp (Root Mean Square Propagation)Adam (Adaptive Moment Estimation)AdamW 优化算法总结 经验和实践建议…

用 Python搭建一个微型的HTTP服务器用于传输 2024/11/9

使用内置的 http.server 模块,来搭建微型服务器。 快速启动服务器http.server --- HTTP 服务器Python 3.13.0 文档 声明:文章代码部分 由 ai 生成 创建一个简单的文件共享服务器 进入 需要共享的目录 再打开cmd 输入以下代码 python -m http.server 8000 打开服务器 设置主…

虚拟机linux7.9下安装mysql

1.MySQL官网下载安装包: MySQL :: Download MySQL Community Server https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.39-linux-glibc2.12-x86_64.tar.gz 2.解压文件: #tar xvzf mysql-5.7.39-linux-glibc2.12-x86_64.tar.gz 3.移动文件&#…

Turtlebot3 buger 硬件与操作平台详细介绍

引言 TurtleBot3 有三个版本,分别是紧凑型的 Burger、功能更强的 Waffle和性能提升的 Waffle Pi,分别适用于不同的应用需求。使用 Raspberry Pi 作为主控单板计算机(SBC),而 Waffle Pi 可以使用更强大的 NVIDIA Jetson…

LabVIEW导入并显示CAD DXF文件图形 程序见附件

LabVIEW导入并显示CAD DXF文件图形 程序见附件 LabVIEW导入并显示CAD DXF文件图形 程序见附件 - 北京瀚文网星科技有限公司 LabVIEW广泛应用于自动化、数据采集、图形显示等领域。对于涉及CAD图形的应用,LabVIEW也提供了一些方法来导入和显示CAD DXF文件&#x…

北斗智能定位平板终端|三防平板|北斗有源终端|北斗搜救终端

在当今快速发展的科技时代,智能设备的应用已经渗透到我们生活的方方面面,从日常娱乐到专业工作,无一不彰显着科技的魅力。特别是在高精度定位领域,随着全球卫星导航系统(GNSS)技术的不断进步,智…

40.第二阶段x86游戏实战2-初识lua

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 本人写的内容纯属胡编乱造,全都是合成造假,仅仅只是为了娱乐,请不要…

华为ENSP--ISIS路由协议

项目背景 为了确保资源共享、办公自动化和节省人力成本,公司E申请两条专线将深圳总部和广州、北京两家分公司网络连接起来。公司原来运行OSFP路由协议,现打算迁移到IS-IS路由协议,张同学正在该公司实习,为了提高实际工作的准确性和…

【Hadoop实训】Flume系统负载均衡测试

一、搭建并配置Flume机器 在master上,执行: scp -r /export/servers/flume slave1:/export/servers/scp -r /export/servers/flume slave2:/export/servers/scp /etc/profile slave1:/etc/profilescp /etc/profile slave2:/etc/profile 执行完上述指令后…

Java中的线程安全问题(如果想知道Java中有关线程安全问题的基本知识,那么只看这一篇就足够了!)

前言:多线程编程已经广泛开始使用,其可以充分利用系统资源来提升效率,但是线程安全问题也随之出现,它直接影响了程序的正确性和稳定性,需要对其进行深入的理解与解决。 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解…

2024 CSS保姆级教程二 - BFC详解

前言 - CSS中的文档流 在介绍BFC之前,需要先给大家介绍一下文档流。​ 我们常说的文档流其实分为定位流、浮动流、普通流三种。​ ​ 1. 绝对定位(Absolute positioning)​ 如果元素的属性 position 为 absolute 或 fixed,它就是一个绝对定位元素。​ 在…

在 Spring Boot 中实时监控 Redis 命令流

前言 在 Redis 的日常使用和调试中,监控命令流有助于我们更好地理解 Redis 的工作状态。Redis 提供了 MONITOR 命令,可以实时输出 Redis 中所有客户端的命令请求,这一功能在调试和分析性能时非常有帮助。在 Spring Boot 项目中,我…

ReadKidz | 一个生成儿童故事绘本的平台

AI创作丨使用ReadKidz快速生成儿童故事绘本 ReadKidz 是一款AI平台,专为快速创作儿童故事绘本而设计。用户仅需输入简单提示词并根据喜好进行选择,便能生成精美的个性化绘本,适合家长、教师或创作者为孩子们创建有趣且富教育意义的故事。 使用…