当前位置:   article > 正文

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

java 百度搜索

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

依赖:
  1. <dependencies>
  2. <dependency>
  3. <groupId>org.seleniumhq.selenium</groupId>
  4. <artifactId>selenium-java</artifactId>
  5. <version>3.141.59</version> <!-- 使用最新的版本 -->
  6. </dependency>
  7. </dependencies>

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

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

测试结果: 

windows/linux通用工具类:
  1. import org.openqa.selenium.By;
  2. import org.openqa.selenium.WebDriver;
  3. import org.openqa.selenium.WebElement;
  4. import org.openqa.selenium.chrome.ChromeDriver;
  5. import org.openqa.selenium.chrome.ChromeOptions;
  6. import org.openqa.selenium.support.ui.ExpectedConditions;
  7. import org.openqa.selenium.support.ui.WebDriverWait;
  8. import org.springframework.stereotype.Component;
  9. import java.util.List;
  10. @Component
  11. public class ChromeUtils {
  12. private StringBuilder sb;
  13. public String baiduSearch(String text) {
  14. WebDriver driver = null;
  15. // windows驱动
  16. // String chromedriverFile = "D:\\Java\\chromedriver\\chromedriver-win64\\chromedriver.exe";
  17. // linux驱动
  18. String chromedriverFile = "/usr/bin/chromedriver-linux64/chromedriver";
  19. try {
  20. /**
  21. * win调出浏览器
  22. */
  23. // // 设置系统属性,告诉WebDriver使用Chrome浏览器
  24. // System.setProperty("webdriver.chrome.driver", chromedriverFile);
  25. // // 创建ChromeDriver实例
  26. // driver = new ChromeDriver();
  27. /**
  28. * linux/win通用, 无需调出浏览器
  29. */
  30. // 设置Chrome浏览器的启动参数
  31. ChromeOptions options = new ChromeOptions();
  32. options.addArguments("--no-sandbox"); // 禁用沙盒模式
  33. options.addArguments("--disable-dev-shm-usage"); // 禁用/dev/shm使用
  34. options.addArguments("--headless"); // 以无头模式运行
  35. // 设置系统属性,告诉WebDriver使用Chrome浏览器
  36. System.setProperty("webdriver.chrome.driver", chromedriverFile);
  37. // 创建ChromeDriver实例时传递配置参数
  38. driver = new ChromeDriver(options);
  39. // 打开百度网页
  40. driver.get("https://www.baidu.com");
  41. // 定位搜索框元素
  42. WebElement searchBox = driver.findElement(By.name("wd"));
  43. // 在搜索框中输入关键词
  44. searchBox.sendKeys(text);
  45. // 提交搜索表单
  46. searchBox.submit();
  47. // Loop to scrape results from the first two pages
  48. for (int page = 0; page < 2; page++) {
  49. // 等待一些时间,以便查看搜索结果
  50. Thread.sleep(5000);
  51. // 定位搜索结果的父元素,这里使用百度搜索结果的<div>标签
  52. List<WebElement> searchResults = driver.findElements(By.xpath("//div[@class='c-container']"));
  53. this.sb = (sb != null) ? sb : new StringBuilder();
  54. // 打印搜索结果的文本内容
  55. for (WebElement result : searchResults) {
  56. sb.append(result.getText());
  57. }
  58. // Go to the next page if it's not the last iteration
  59. if (page < 1) {
  60. // 等待 "下一页" 按钮可见
  61. WebDriverWait wait = new WebDriverWait(driver, 60);
  62. WebElement nextPageButton = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//a[@class='n' and contains(text(),'下一页')]")));
  63. // Go to the next page
  64. nextPageButton.click();
  65. }
  66. }
  67. } catch (InterruptedException e) {
  68. e.printStackTrace();
  69. } finally {
  70. if (driver != null) {
  71. // 关闭浏览器
  72. driver.quit();
  73. }
  74. }
  75. return sb.toString().replaceAll("\n", "");
  76. }
  77. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/768262
推荐阅读
相关标签
  

闽ICP备14008679号