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

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

依赖:

    
        org.seleniumhq.selenium
        selenium-java
        3.141.59 
    

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

测试结果: 

Java中实现百度浏览器搜索功能(windows/linux)_第1张图片

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);

                // 定位搜索结果的父元素,这里使用百度搜索结果的
标签 List 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", ""); } }

你可能感兴趣的:(chrome,java)