Java中实现百度浏览器搜索功能(windows/linux)

要在Java中实现百度浏览器搜索功能,你可以使用Selenium WebDriver。Selenium是一个用于自动化浏览器的工具,WebDriver是Selenium的一个子项目,它提供了一套API,可以直接与浏览器交互。

依赖:
<dependencies><dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-java</artifactId><version>3.141.59</version> <!-- 使用最新的版本 --></dependency>
</dependencies>

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;public class BaiduSearch {public static void main(String[] args) {// 设置系统属性,告诉WebDriver使用Chrome浏览器System.setProperty("webdriver.chrome.driver", "D:\\Java\\chromedriver\\chromedriver-win64\\chromedriver.exe");// 创建ChromeDriver实例WebDriver driver = new ChromeDriver();// 打开百度网页driver.get("https://www.baidu.com");// 定位搜索框元素WebElement searchBox = driver.findElement(By.name("wd"));// 在搜索框中输入关键词searchBox.sendKeys("毛泽东");// 提交搜索表单searchBox.submit();// 等待一些时间,以便查看搜索结果try {Thread.sleep(5000);} catch (InterruptedException e) {e.printStackTrace();}// 关闭浏览器driver.quit();}
}

chrome驱动下载地址: Chrome for Testing availability

测试结果: 

windows/linux通用工具类:
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.springframework.stereotype.Component;import java.util.List;@Component
public class ChromeUtils {private StringBuilder sb;public String baiduSearch(String text) {WebDriver driver = null;// windows驱动
//        String chromedriverFile = "D:\\Java\\chromedriver\\chromedriver-win64\\chromedriver.exe";// linux驱动String chromedriverFile = "/usr/bin/chromedriver-linux64/chromedriver";try {/*** win调出浏览器*/
//            // 设置系统属性,告诉WebDriver使用Chrome浏览器
//            System.setProperty("webdriver.chrome.driver", chromedriverFile);
//            // 创建ChromeDriver实例
//            driver = new ChromeDriver();/*** linux/win通用, 无需调出浏览器*/// 设置Chrome浏览器的启动参数ChromeOptions options = new ChromeOptions();options.addArguments("--no-sandbox");            // 禁用沙盒模式options.addArguments("--disable-dev-shm-usage");  // 禁用/dev/shm使用options.addArguments("--headless");               // 以无头模式运行// 设置系统属性,告诉WebDriver使用Chrome浏览器System.setProperty("webdriver.chrome.driver", chromedriverFile);// 创建ChromeDriver实例时传递配置参数driver = new ChromeDriver(options);// 打开百度网页driver.get("https://www.baidu.com");// 定位搜索框元素WebElement searchBox = driver.findElement(By.name("wd"));// 在搜索框中输入关键词searchBox.sendKeys(text);// 提交搜索表单searchBox.submit();// Loop to scrape results from the first two pagesfor (int page = 0; page < 2; page++) {// 等待一些时间,以便查看搜索结果Thread.sleep(5000);// 定位搜索结果的父元素,这里使用百度搜索结果的<div>标签List<WebElement> searchResults = driver.findElements(By.xpath("//div[@class='c-container']"));this.sb = (sb != null) ? sb : new StringBuilder();// 打印搜索结果的文本内容for (WebElement result : searchResults) {sb.append(result.getText());}// Go to the next page if it's not the last iterationif (page < 1) {// 等待 "下一页" 按钮可见WebDriverWait wait = new WebDriverWait(driver, 60);WebElement nextPageButton = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//a[@class='n' and contains(text(),'下一页')]")));// Go to the next pagenextPageButton.click();}}} catch (InterruptedException e) {e.printStackTrace();} finally {if (driver != null) {// 关闭浏览器driver.quit();}}return sb.toString().replaceAll("\n", "");}
}

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

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

相关文章

前端图片适配不同屏幕方案

预备知识&#xff1a; 设备独立像素,以下图的iphone12 Pro为例&#xff0c;390*844表示的就是设备独立像素&#xff08;DIP&#xff09;,也可以理解为CSS像素 物理像素&#xff08;设备像素&#xff09;&#xff0c;就是屏幕的分辨率&#xff0c;显示屏就是由一个个物理像素…

django之drf框架(排序、过滤、分页、异常处理)

排序 排序的快速使用 1.必须是继承GenericAPIView及其子类才能是用排序 导入OrderingFilter类&#xff0c;from rest_framework.filters import OrderingFilter 2.在类中配置类属性 filter_backends[OrderingFilter] 3.类中写属性 ordering_fields [price,id] # 必须是表的…

springboot整合minio做文件存储

一,minio介绍 MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口&#xff0c;非常适合于存储大容量非结构化的数据&#xff0c;例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等&#xff0c;而一个对象文件可以是任意大小&…

Android ImageView如何使用.svg格式图片

我们知道imageview常用的图片格式是.jpg/.png或者drawable里的部分.xml文件。但有时UI会给过来.svg格式的文件&#xff0c;下面讲解如何使用.svg格式图片文件 step1:AS点击File -> New -> Vector Asset step2:选中要使用的.svg文件&#xff0c;按需要命名和调整&#x…

java itext5 生成PDF并填充数据导出

java itext5 生成PDF并填充数据导出 依赖**文本勾选框****页眉**&#xff0c;**页脚****图片**实际图 主要功能有文本勾选框&#xff0c;页眉&#xff0c;页脚&#xff0c;图片等功能。肯定没有专业软件画的好看&#xff0c;只是一点儿方法。仅供参考。 依赖 <!--pdf-->&…

axios配置请求头content-type 和 get/post请求方式

axios配置请求头content-type https://blog.csdn.net/wojiushiwo945you/article/details/107653962 axios 是Ajax的一个插件&#xff0c;axios虽然是一个插件&#xff0c;但是我们不需要通过Vue.use(axios)来使用&#xff0c;下载完成后&#xff0c;只需在项目中引入即可。(一…

Yapi接口管理平台Centos7部署

文章目录 1.环境准备1.1 关闭透明大页THP1.2 设置最大文件打开数最大进程数 2.Nodejs安装3.安装Mongodb3.1 下载安装3.2 配置3.3 配置环境变量3.4 启动3.5 关闭 4.安装YAPI4.1 离线安装4.2 页面安装&#xff08;本次采用&#xff09;4.3 访问 1.环境准备 1.1 关闭透明大页THP …

OpenEular23.09(欧拉)操作系统为企业搭建独立的K8S集群环境,详细流程+截图

1.环境&#xff1b; win10&#xff0c;vmware16 pro&#xff0c;openeular23.09 集群模式&#xff1a;一主二从 主机硬件配置 主机名IP角色CPU内存硬盘k8s-master01192.168.91.100master4C4G40Gk8s-worker02192.168.91.101worker(node)4C4G40Gk8s-worker03192.168.91.102work…

代码随想录算法训练营day2|977.有序数组的平方、209.长度最小的子数组、59.螺旋矩阵II

第一章 数组part02 977.有序数组的平方 &#xff0c;209.长度最小的子数组 &#xff0c;59.螺旋矩阵II &#xff0c;总结 977.有序数组的平方 题目建议&#xff1a; 本题关键在于理解双指针思想 题目链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客…

w7数据库基础之mysql函数

系统函数 1.version() --mysql版本 2.user() --当前登录的数据库用户名system_user() 3.database() --当前使用的数据库名。schema() 4.datadir --数据库路径 5.version_compile_os 操作系统版本&#xff0c;like 后面可以使用%%进行模糊查询。 6.hostname 当前机器…

出现频率高达70%软件测试面试题及答案!——看完面试官:是你面试我还是我面试你啊!

【纯干货&#xff01;&#xff01;&#xff01;】花费了整整3天&#xff0c;整理出来的全网最实用软件测试面试大全&#xff0c;一共30道题目答案的纯干货&#xff0c;希望大家多多支持&#xff0c;建议 点赞&#xff01;&#xff01;收藏&#xff01;&#xff01;长文警告&…

QuestMobile:网易有道词典、美团、知乎等一同入榜2023年“00后喜爱APP”

近期&#xff0c;国内第三方数据机构QuestMobile发布《2023中国互联网核心趋势年度报告》&#xff0c;网易有道词典荣获“2023中国互联网APP TOP50赛道用户规模NO.1”及“00后用户喜爱App”两项殊荣。 据悉&#xff0c;QuestMobile年度“行业用户规模”奖项是以2022年10月-2023…

代码随想录-刷题第三十九天

动态规划理论基础 动态规划的题目由重叠子问题构成&#xff0c;每一个状态一定是由上一个状态推导出来的。这一点就区分于贪心&#xff0c;贪心没有状态推导&#xff0c;而是从局部直接选最优的。 动态规划五步曲 确定dp数组&#xff08;dp table&#xff09;以及下标的含义…

MySQL按月分片

一、按照月分片 使用场景为按照自然月来分片,每个自然月为一个分片,但是一年有12个月,是不是要有12个数据节点才行呢?并不是。例如我现在只有三个分片数据库,这样就可以1月在第一个数据分片中,2月在第二个数据分片中,3月在第三个数据分片中,当来到4月的时候,就会重新开…

w4操作系统之windows上创建隐藏用户

隐藏用户–在windows上创建隐藏用户 1.首先查看现有哪些用户。&#xff08;通过net user 命令&#xff09; 2.然后创建隐藏用户&#xff08;net user client$ 123 /add&#xff09; 此时出现报错信息。原因是登录用户没权限。需要用管理员的权限 3.用管理员身份运行cmd&am…

【数据结构】C语言实现单链表的基本操作

单链表基本操作的实现 导言一、查找操作1.1 按位查找1.1.1 按位查找的C语言实现1.1.2 按位查找的时间复杂度 1.2 按值查找1.2.1 按值查找的C语言实现1.2.2 按值查找的时间复杂度 二、插入操作2.1 后插操作2.2 前插操作 三、删除操作结语 导言 大家好&#xff0c;很高兴又和大家…

代码随想录二刷 | 二叉树 | 最大二叉树

代码随想录二刷 &#xff5c; 二叉树 &#xff5c; 最大二叉树 题目描述解题思路代码实现 题目描述 654.最大二叉树 给定一个不重复的整数数组 nums 。 最大二叉树可以用下面的算法从 nums 递归地构建: 创建一个根节点&#xff0c;其值为 nums 中的最大值。递归地在最大值 左…

SpringSecurity6 | 默认用户生成(上)

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: Java从入门到精通 ✨特色专栏: MySQL学习 🥭本文内容:SpringSecurity6 | 默认用户生成(上) 📚个人知识库: [Leo知识库]https://gaozim…

基于STM8S103F3P6的超声波测距仪设计

大三的时候给大四学长做的毕业设计题目 文章目录 1 绪论1.1 设计背景1.2 设计的主要任务 2 超声波测距基本理论及总体架构2.1 基本知识2.1.1 超声波特性2.1.2 超声波传感器2.1.3 超声波测距原理 2.2 总体架构2.2.1 设计原则2.2.2 总体方案介绍 2.3 主要器件选择与介绍2.3.1 主控…