Java Spring Boot 从必应爬取图片

获取图片主要就是通过必应图片页面控制台的元素,确认图片和标题在哪个类中(浏览器 F12)

引入依赖

这里需要引入两个依赖 jsoup 和 hutool

maven依赖网站地址:Maven Repository: Search/Browse/Explore (mvnrepository.com)

挑选使用最多的版本即可

hutool依赖

<!-- https://mvnrepository.com/artifact/cn.hutool/hutool-all -->
<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.8.27</version>
</dependency>

jsoup 依赖

<!-- https://mvnrepository.com/artifact/org.jsoup/jsoup -->
<dependency>
  <groupId>org.jsoup</groupId>
  <artifactId>jsoup</artifactId>
  <version>1.15.3</version>
</dependency>

查看浏览器图片的位置

这里 murl 和 turl 都可以访问,选取一个即可。

使用 jsoup 爬取

1. 首先从 jsoup 官方文档得到示例代码:jsoup: Java HTML parser, built for HTML editing, cleaning, scraping, and XSS safety

Document doc = Jsoup.connect("https://en.wikipedia.org/").get();
log(doc.title());
Elements newsHeadlines = doc.select("#mp-itn b a");
for (Element headline : newsHeadlines) {
  log("%s\n\t%s", 
    headline.attr("title"), headline.absUrl("href"));
}

2. 完整代码

public class CrawlerTest {
    public static void main(String[] args) throws IOException {
        //搜索词,可以替换成你想搜索的词,前端传入
        System.out.println("请输入想要搜索的图片:");
        Scanner scanner =  new Scanner(System.in);
        String search = scanner.nextLine();
        //拼接想要搜索的图片
        String url = String.format("https://cn.bing.com/images/search?q=%s&first=1", search);
        /*
          简单来说,jsoup 就是爬虫,通过 jsoup 提供的 api,可以方便的获取到网页的 html 结构,
          然后通过解析 html 结构,获取到我们想要的数据
          connect 方法是 jsoup 提供的连接网页的方法,传入 url 即可
          get 方法是 jsoup 提供的获取网页内容的方法,返回值是 Document 类型
         */
        Document doc = Jsoup.connect(url).get();
        /*
        * 从文档中获取到所有的图片元素,通过选择器 ".iuscp.isv" 获取到所有的图片元素
        * .iuscp.isv 表示的是图片元素,是上一步通过浏览器的控制台找到的
        * 然后遍历这些元素,获取到图片的地址,图片名称等
        */
        Elements elements = doc.select(".iuscp.isv");
        for (Element element : elements) {

            //获取到图片的地址
            String murl = element.select(".iusc").get(0).attr("m");
            /*
            获取到的图片地址是 Json 格式
            通过 Hutool 提供的 JSONUtil 工具类,将 Json 格式转换成 Map 格式
            然后通过 Map 获取到图片的地址

            注意:Hutool 是一个 Java 工具包,它封装了 Java 开发中常用的方法,
             */
            Map<String, Object> map = JSONUtil.toBean(murl, Map.class);
            String fmurl = (String) map.get("murl");
            System.out.println(fmurl);
            /*
            获取图片名称和图片地址同理
            通过 element.select(".inflnk") 获取到图片名称元素,通过 attr("aria-label") 获取到图片名称
             */
            String pName = element.select(".inflnk").get(0).attr("aria-label");
            System.out.println(pName);
        }
    }
}

结果展示

随便选取一个地址打开

 

完成。 

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

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

相关文章

Java如何读取resources目录下的文件路径(九种代码示例教程)

本文摘要&#xff1a;Java如何读取resources目录下的文件路径 &#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主。公粽号&#xff1a;洲与AI。 &#x1f91…

翻译《The Old New Thing》- What a drag: Dragging a Uniform Resource Locator (URL)

What a drag: Dragging a Uniform Resource Locator (URL) - The Old New Thing (microsoft.com)https://devblogs.microsoft.com/oldnewthing/20080312-00/?p23133 Raymond Chen 2008年03月12日 麻烦的拖拽&#xff1a;拖拽统一资源定位符&#xff08;URL&#xff09; 简要 …

HALCON-从入门到入门-图像格式的互相转换

1.废话 上次说到了图片的读取和写入到本地&#xff0c;这次说一下图片的格式相关。 位图和矢量图 photoshop处理出来的图片肯定叫做图片&#xff0c;那么coreDraw处理出来的图片是不是也叫图片。 之间就有区分&#xff0c;一种叫做位图&#xff0c;一种叫做矢量图 位图和矢…

STM32作业实现(四)光敏传感器

目录 STM32作业设计 STM32作业实现(一)串口通信 STM32作业实现(二)串口控制led STM32作业实现(三)串口控制有源蜂鸣器 STM32作业实现(四)光敏传感器 STM32作业实现(五)温湿度传感器dht11 STM32作业实现(六)闪存保存数据 STM32作业实现(七)OLED显示数据 STM32作业实现(八)触摸按…

曝光超1.5亿,迪丽热巴“抖音直播首秀”解锁德施曼智能锁科技革命

作为中国电商行业年中最大的消费狂欢节点&#xff0c;今年的618大促热闹依旧&#xff1b;各大品牌在今年极简的现货模式下展开了周期最长的品牌实力比拼。其中&#xff0c;高端智能锁领军品牌德施曼在618大促期间&#xff0c;携手代言人迪丽热巴&#xff0c;再次掀起智能锁消费…

【前端】Vuex笔记(超详细!!)

最近花了两周时间&#xff0c;完完全全的跟着Vuex官方的视频学完了Vuex并且详详细细的做了笔记&#xff0c;其中总结部分是我对于整个视频课程的总结&#xff0c;视频部分是跟着视频做的笔记&#xff0c;如果总结部分有不懂的话&#xff0c;直接去视频部分查找对应的笔记即可&a…

Codeforces Round 548 (Div. 2) C. Edgy Trees

Edgy Trees time limit per test: 2 second memory limit per test: 256 megabytes input: standard input output: standard output You are given a tree (a connected undirected graph without cycles) of n n n vertices. Each of the n − 1 n - 1 n−1 edges of the t…

计算机毕业设计 | SpringBoot招投标系统 任务发布网站(附源码)

1&#xff0c;绪论 在市场范围内&#xff0c;任务发布网站很受欢迎&#xff0c;有很多开发者以及其他领域的牛人&#xff0c;更倾向于选择工作时间、工作场景更自由的零工市场寻求零散单子来补贴家用。 如今市场上&#xff0c;任务发布网站鱼龙混杂&#xff0c;用户需要找一个…

【TCP协议中104解析】wireshark抓取流量包工具,群殴协议解析基础

Tcp ,104 ,wireshark工具进行解析 IEC104 是用于监控和诊断工业控制网络的一种标准&#xff0c;而 Wireshark则是一款常用的网络协议分析工具&#xff0c;可以用干解析TEC104 报文。本文将介绍如何使用 Wireshark解析 IEC104报文&#xff0c;以及解析过 程中的注意事项。 一、安…

STL-queue的使用及其模拟实现

在C标准库中&#xff0c;队列(queue)是一种容器适配器&#xff0c;它以先进先出的方式组织数据&#xff0c;其中从容器一端插入元素&#xff0c;另一端取出元素。 queue的使用 queue的构造函数 queue的成员函数 empty&#xff1a;检测队列是否为空size&#xff1a;返回队列中有…

7-14 字节序(Endianness)---PTA实验C++

一、题目描述 “内存寻址的最小单位是字节”——明白。 “每个字节有唯一的编号&#xff0c;称为地址”——明白。 “C中int通常为四个字节”——了解。 “int x 1;最低字节是1还是0&#xff1f;——纳尼&#xff1f; 事实上&#xff0c;这里有点小小分歧&#xff1a; 多字…

C++对C的增强

1、作用域运算符 ::解决归属问题&#xff08;谁是谁的谁&#xff09; 可以优先使用全局变量 2、命名空间 使用关键字namespace&#xff0c;控制标名称的作用域。 命名空间的本质&#xff1a;对符号常量、变量、函数、结构、枚举、类和对象等等进行封装 1、创建一个命名空间…

学习小记录——python函数的定义和调用

今日小好运&#xff0c;未来有好运。&#x1f381;&#x1f496;&#x1fad4; 分享个人学习的小小心意&#xff0c;一起来看看吧 函数的定义 函数通常来说就是带名字的代码块&#xff0c;用于完成具体的工作&#xff0c;需要使用的时候调用即可&#xff0c;这不仅提高代码的…

我的创作纪念日-砥砺前行

机缘 大家好&#xff0c;我是诊断协议那些事儿&#xff0c;又和大家见面了&#xff0c;记录一下创作日记&#xff0c;转眼间已经在CSDN平台创作三年了&#xff0c;最初仅仅是为了记录学习过程中的笔记&#xff0c;后来慢慢转为项目实践中的经验分享&#xff0c;当然更多的希望…

dm8 什么时候视图中统计的内存会超过OS

v$bufferpool和v$mem_pool视图记录着DMSERVER各组件的内存占用量。理论上跟OS看到的保持一致。但实际大多数场景下&#xff0c;OS中看到的数据远大于视图中的统计。这里面可能有内存泄漏的原因。不过也有的时候视图中的统计数据超过OS。下面就是这种情况&#xff1a; 上图中红线…

nas连接萤石云摄像机CTQ6X

需要准备的nassurveillance 请参考这个大佬的流程 https://www.bilibili.com/video/BV1ri4y1g7EN/ 踩坑&#xff1a; 一直到添加录像机验证一直没问题&#xff0c;但是验证一直不通过&#xff0c;后面下载了萤石云工作室的win桌面客户端&#xff0c;不知道是不是设置了预览还…

【Ubuntu】【Shell】执行sh脚本报错“xxx.sh:/bin/bash^M:解释器错误: 没有那个文件或目录“

背景 在自己Ubuntu环境执行sh脚本&#xff0c;报错"xxx.sh&#xff1a;/bin/bash^M&#xff1a;解释器错误: 没有那个文件或目录"&#xff0c;查了下是Ubuntu系统默认的shell是dash: 修改配置过下&#xff0c;变成bash 解决方案 在终端执行&#xff1a; sudo dp…

云队友:专业的远程工作和程序员接单平台,用户体验佳

编程赚钱的平台有不少&#xff0c;良莠不齐&#xff0c;今天给大家分享个专业的远程工作平台&#xff0c;以技术类工作为主&#xff08;包括编程&#xff09;&#xff1a; 云队友简介 外包大师是PMCAFF互联网产品社区于2016年推出的互联网产品技术外包服务平台。外包大师最新…

MyBatis 核心配置文件详细内容详解

1. MyBatis 核心配置文件详细内容详解 文章目录 1. MyBatis 核心配置文件详细内容详解2. 测试和学习的准备工作3. environment 标签4. transactionManager 标签5. dataSource 标签6. properties 标签7. mapper 标签8. 总结&#xff1a;9. 最后&#xff1a; 关于 MyBatis 这个核…

攻防世界---misc---2017_Dating_in_Singapore

1、题目描述 2、下载附件是一个pdf&#xff0c;里面是一个日历 3、题目描述是一些数字&#xff0c;直觉猜测是和日历的日期有关&#xff0c;仔细看题目的描述&#xff0c;会发现有个-连接&#xff0c;拆开之后发现一共有12组数据&#xff0c;再连联系到十二个月份&#xff0c;再…