Spring Boot 集成 Selenium 实现爬虫教程

Selenium 是一款流行的自动化测试工具,也常用于网页爬虫。本文介绍如何在 Spring Boot 项目中集成 Selenium,并以 ChromeDriver 为例实现简单爬虫。

一、Selenium 简介

Selenium 支持多种浏览器自动化操作,常用于自动化测试、数据采集等场景。结合 Spring Boot,可实现高效的爬虫服务。

二、集成步骤

1. 添加依赖

pom.xml 中添加 Selenium 相关依赖:

1
2
3
4
5
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.19.1</version>
</dependency>

可在 Maven Central 查询最新版本。

2. 下载并配置 ChromeDriver

  • 访问 ChromeDriver 官网 下载与你本地 Chrome 浏览器版本对应的 ChromeDriver。
  • 解压后,将 chromedriver 可执行文件路径加入系统环境变量,或在代码中指定路径。

3. Spring Boot 中使用 Selenium

示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class SeleniumController {
@GetMapping("/crawl")
public String crawl() {
// 指定 chromedriver 路径(如已加入环境变量可省略)
System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");
WebDriver driver = new ChromeDriver();
try {
driver.get("https://www.example.com");
WebElement element = driver.findElement(By.tagName("h1"));
return "页面标题:" + element.getText();
} finally {
driver.quit();
}
}
}
  • 访问 http://localhost:8080/crawl,即可触发爬虫并返回页面标题。

4. 常见问题

  • 驱动版本不匹配:确保 ChromeDriver 版本与本地 Chrome 浏览器一致。
  • 权限问题:如遇权限报错,给 chromedriver 文件加执行权限:
    1
    chmod +x /path/to/chromedriver
  • 服务器环境:如在无界面服务器运行,建议使用无头模式(headless),可在 ChromeOptions 中设置:
    1
    2
    3
    ChromeOptions options = new ChromeOptions();
    options.addArguments("--headless");
    WebDriver driver = new ChromeDriver(options);

三、进阶建议

  • 可结合定时任务、代理池、分布式等技术实现更复杂的爬虫。
  • 注意遵守目标网站的 robots 协议和相关法律法规。

以上内容仅供参考,请结合实际情况具体分析