赞
踩
要在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 pages
- for (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 iteration
- if (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 page
- nextPageButton.click();
- }
- }
- } catch (InterruptedException e) {
- e.printStackTrace();
- } finally {
- if (driver != null) {
- // 关闭浏览器
- driver.quit();
- }
- }
- return sb.toString().replaceAll("\n", "");
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。