【 Selenium 爬虫】2025年8月25日-pixabay 图片采集

无恶意采集,取部分图片用来做相册测试的😄

效果图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.la.selenium.utils.SeleniumUtil;
import lombok.extern.slf4j.Slf4j;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;/*** 功能描述** @author jason*/
@Slf4j
public class ImageSpider {private static String url;private static final String imagePath = "/data/pixabay/photos/image_url.txt";public static void main(String[] args) {// String url = "https://pixabay.com/zh/illustrations/search/?order=ec";// String url = "https://pixabay.com/zh/illustrations/search/?order=ec&pagi=2";String urlTemplate = "https://pixabay.com/zh/photos/search/?order=ec&pagi={page}";FileUtil.writeUtf8String("", imagePath);SeleniumUtil.exec((webDriver) -> {for (int i = 1; i <= 100; i++) {int finalI = i;url = StrUtil.format(urlTemplate, new HashMap<String, Object>() {{put("page", finalI);}});if (i == 1) {url = StrUtil.replace(url, "&pagi=1", "");}List<String> imageList = spiderImage(webDriver, url);FileUtil.appendUtf8Lines(imageList, imagePath);}});log.info("采集完成");}public static List<String> spiderImage(WebDriver driver, String url) {driver.get(url);WebDriverWait wait = new WebDriverWait(driver, 10);By locator = By.xpath("//*[@id=\"app\"]/div[1]/div/div[2]/div[2]/div/div");wait.until(ExpectedConditions.visibilityOfAllElementsLocatedBy(locator));//            String pageSource = driver.getPageSource();
//            System.out.println(pageSource);WebElement webElement1 = driver.findElement(locator);List<WebElement> webElement2 = webElement1.findElements(By.className("column--HhhwH"));List<String> imageList = new ArrayList<>();webElement2.forEach(webElement3 -> {List<WebElement> webElement4 = webElement3.findElements(By.className("cell--UMz-x"));webElement4.forEach(webElement5 -> {String webElement5Html = webElement5.getAttribute("outerHTML");// 获取里面的 JSON 字符串Document doc = Jsoup.parse(webElement5Html);Elements scriptElements = doc.select("script[type=application/ld+json]");String scriptJson = scriptElements.first().html();// 获取 contentUrlString contentUrl = JSONUtil.parseObj(scriptJson).getStr("contentUrl");log.info("采集链接:{}", contentUrl);imageList.add(contentUrl);});});return imageList;}}

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

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

相关文章

服务器托管需要注意什么事项?

服务器托管是企业IT基础设施的关键环节&#xff0c;其稳定性和安全性直接影响业务连续性。需要注意下面这几点&#xff01; 一、服务商与机房选择 服务商资质 选择持有ISP证书的合法服务商&#xff0c;优先考虑运营超5年、市场口碑佳的老牌公司&#xff0c;技术团队需具备72…

微信小程序备忘

1.按钮事件中想切换到tabBar中的链接用switchTab&#xff0c;不能用navigateTo&#xff1a;agentPage: function() { wx.switchTab({url: /pages/agent/agent}) },特别注意&#xff1a;微信小程序中所谓的自定义&#xff0c;并不是完全的自定义&#xff0c;在app.json中定义&a…

虚拟机NAT模式通过宿主机(Windows)上网不稳定解决办法(无法上网)(将宿主机设置固定ip并配置dns)

文章目录问题描述解决办法分析**1. 问题的根本原因****(1) 宿主机动态IP的DNS配置问题****(2) NAT模式下的网络依赖****(3) 自习室WiFi的潜在限制****2. 用户操作的合理性分析****(1) 固定IP的作用****(2) 手动指定公共DNS的作用****3. 用户怀疑的正确性****4. 其他可能原因的排…

基于 HTML、CSS 和 JavaScript 的智能图像虚化系统

目录 1 前言 2 技术实现 2.1 HTML&#xff1a;搭建页面基础结构 2.2 CSS&#xff1a;打造科技感视觉体验 2.3 JavaScript&#xff1a;实现核心虚化功能 2.3.1 图像上传与初始化 2.3.2 实时虚化处理 2.3.3 图像下载功能 3 完整代码 4 运行结果 5 总结 1 前言 三大核…

PS更改图像尺寸

新建文档 1.左上角——新文件可以新建文档2.文件——新建文档3.快捷键CtrlN 对文件命名 输入新文件名称设置宽度和高度 设置文件的宽高&#xff0c;单位可以是像素、英寸、厘米等。还可以选择文件方向或者是否使用画板模式画布背景色 一般显示白色&#xff0c;也可以选择其他颜…

分词器详解(一)

文章目录&#x1f31f; 第0层&#xff1a;极简版&#xff08;30秒理解&#xff09;核心公式生活比喻&#x1f4da; 第1层&#xff1a;基础概念&#xff08;5分钟理解&#xff09;1. 分词器基础1.1 分词器的核心作用1.2 主流分词算法对比2. 基础实现2.1 BPE实现原理2.2 特殊标记…

推荐一个论文阅读工具ivySCI

1.一些关于ivySCI的数据 &#xff08;摘自&#xff1a;吴焱红&#xff0c;论文示范:ivySCI 在论文管理、阅读和笔记中的体验&#xff09; 1.科研人员花在文献阅读上的时间占总工作时间的 23%2.每年阅读的文献数量大概是 188 到 280 篇3.ivySCI 提供 Pad(iPad 和 Android) 和桌…

诊断服务器(Diagnostic Server)

在《SWS_Diagnostics.pdf》中,诊断服务器(Diagnostic Server) 是诊断管理(DM)的核心执行单元,聚焦 “软件集群(SoftwareCluster)级诊断资源的独立管控”,实现 UDS(ISO 14229-1)与 SOVD(ASAM 服务化诊断)的全流程诊断功能。以下结合文档 7.3 节 “Diagnostic Serve…

如何开发一款高稳定、低延迟、功能全面的RTSP播放器?

一、引言&#xff1a;RTSP的价值与挑战 RTSP&#xff08;Real-Time Streaming Protocol&#xff09;作为实时流媒体传输的核心协议&#xff0c;广泛应用于安防监控、无人机回传、教育互动、远程医疗、单兵指挥等行业。它提供了 基于请求/响应机制的流媒体控制能力&#xff0c;…

数据结构——树(03二叉树,与路径有关的问题,代码练习)

文章目录一、求二叉树的值【层序遍历实现】1.1右视图1.2层最大值1.3层和1.4最底层的叶子结点的和1.5层平均值1.6最大层和的层号二、二叉树的路径2.1根节点到叶子节点&#xff0c;二叉树的路径2.2路径的十进制之和 & 二进制之和2.3二叉树里的路径三、二叉树的路径23.1最长同…

Git配置:禁用全局HTTPS验证

文章目录Git配置&#xff1a;禁用全局HTTPS验证什么是HTTPS验证&#xff1f;为什么需要禁用HTTPS验证&#xff1f;如何禁用全局HTTPS验证&#xff1f;注意事项结论Git配置&#xff1a;禁用全局HTTPS验证 在软件开发和版本控制中&#xff0c;Git是一个不可或缺的工具。它帮助开…

【54页PPT】基于DeepSeek的数据治理技术(附下载方式)

篇幅所限&#xff0c;本文只提供部分资料内容&#xff0c;完整资料请看下面链接 https://download.csdn.net/download/2501_92796370/91778320 资料解读&#xff1a;《基于DeepSeek的数据治理技术》 详细资料请看本解读文章的最后内容。 作为数据治理领域的资深研究者&#…

2025年最新 unityHub游戏引擎开发2d手机游戏和桌面游戏教程

设置开发编辑器 &#xff1a; 以下是一个简化版的移动控制代码&#xff0c;不依赖自定义输入配置&#xff0c;直接使用 Unity 新输入系统的默认绑定&#xff0c;并兼容手机端的 Joystick Pack 虚拟摇杆&#xff1a; SimplePlayerMovement using UnityEngine; using UnityEngi…

SuperMap GIS基础产品FAQ集锦(20250901)

一、SuperMap iDesktopX 问题1&#xff1a;咨询MapGIS数据迁移功能是否支持MapGIS 10版本&#xff0c;在迁移10版本的符号库时卡在0%并报错“升级6x系统库失败”。 11.3.0【问题原因】客户使用问题&#xff0c;mapgis6.7里面工程文件和符号库之前没有绑定关系&#xff0c;mapgi…

react-native-reanimated-carousel的API记录

‌核心属性‌‌data‌类型: Array<any>必填&#xff0c;轮播数据源&#xff0c;支持任意类型数据。‌renderItem‌类型: ({ item, index }) > React.ReactNode必填&#xff0c;自定义卡片渲染函数&#xff0c;参数包含当前项和索引。‌width/height‌类型: number控制…

TypeScript 泛型入门(新手友好、完整详解)

目标读者&#xff1a;刚学 TS 的前端开发者&#xff0c;或希望把泛型用到实际工程&#xff08;请求封装、组件复用&#xff09;中的同学。目录 为什么需要泛型&#xff08;直观动机&#xff09;基本语法与例子&#xff08;函数、接口、类&#xff09;泛型约束&#xff08;exten…

Linux ARP老化机制/探测机制/ip neigh使用

文章目录1. ARP状态机1.1 ARP状态类型1.2 状态转换图2. 超时时间与参数2.1 主要超时参数2.1.1 基础时间参数2.1.2 探测相关参数2.1.3 垃圾回收参数3. 主机发送ARP报文的时机3.1 发送数据包时发现ARP缓存中没有目标IP的MAC地址3.2 ARP条目进入STALE状态后需要发送数据3.3 定期维…

便携式显示器怎么选?:6大关键指标全解析

地铁通勤路上&#xff0c;程序员小陈掏出背包里的便携屏&#xff0c;连接手机即刻扩展出第二个工作窗口&#xff0c;赶在上班前修复了紧急bug&#xff1b;咖啡厅里&#xff0c;设计师阿琳用笔记本加便携屏的双屏组合&#xff0c;一边参看客户brief一边修改方案&#xff0c;效率…

以太坊网络

以太坊的网络和以太网是两个完全不同的概念&#xff0c;虽然它们的名称听起来相似&#xff0c;但它们属于不同的技术领域。以太坊网络&#xff08;Ethereum Network&#xff09;领域&#xff1a;区块链和加密货币定义&#xff1a;以太坊是一个开源区块链平台&#xff0c;支持智…

nano banana官方最强Prompt模板来了!六大场景模板详解

最近&#xff0c;相信大家的朋友圈和社交媒体都被一个叫nano banana的AI图像生成工具刷屏了。从精致的手办模型到名画人物穿越&#xff0c;再到中土世界场景还原&#xff0c;nano banana已然成为了最火爆的“整活工具之一。刚刚&#xff0c;谷歌为nano banana推出了官方Prompt模…