selenium-java 依赖
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.0.0-alpha-6</version>
</dependency>
谷歌驱动准备
[chrome-headless驱动淘宝下载地址][https://npm.taobao.org/mirrors/chromedriver/]
版本对应所运行的环境浏览器的版本(demo 机器上的谷歌浏览器是93版本所以对应下载了93的win驱动)
chromeConfig.java
@Component
public class ChromeConfig {
public static ChromeOptions getOptions() {
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setHeadless(true);
chromeOptions.addArguments("--no--sandbox","--disable-gpu","--disable-dev-shm-usage",
"blink-settings=imagesEnabled=false","--disable-javascript","--disable-plugins");
return chromeOptions;
}
}
ChromeInit.java
@Component
public class ChromeInit implements ApplicationRunner {
public ChromeDriver driverweb;
@Override
public void run(ApplicationArguments args) throws Exception {
driverweb=getDriver();
}
public static ChromeDriver getDriver() {
//目录可以写进配置文件读取,这里方便测试直接写入了
String path = "D:\\chromedriver.exe";
System.setProperty("webdriver.chrome.driver",path);
return new ChromeDriver(getOptions());
}
}
CityInfoService.java
@Service
public class CityInfoService {
public static final String strUrl = "这里填写地址";
@Resource
ChromeInit chromeInit;
/**
* @param info url / code
* @return
* @throws InterruptedException
*/
public Map<String, Object> getInformation(Map<String, String> info) throws InterruptedException {
HashMap<String, Object> map = new HashMap<>();
String url = info.get("url");
String code = info.get("code");
if ("" != code && code != null) {
url = strUrl + code;
}
if ("".equals(url) || url == null) {
map.put("code", 0);
map.put("content", "url 或 code 必填其一");
map.put("data", null);
return map;
}
chromeInit.driverweb.get(url);
Thread.sleep(100);
//这里是获取浏览器session信息
JSONObject jsonObject = JSON.parseObject(chromeInit.driverweb.getSessionStorage().getItem("key"));
map.put("code", 1);
map.put("content", "操作成功");
map.put("data", jsonObject);
return map;
}
}
依据浏览器自动化工具selenium 实现模拟用户操作 ,从而可以爬取页面信息,编写自动操作脚本实现测试等。
效率上和其他方法比略有不足,该方法并不常用。
在匹配 selenium 和驱动 浏览器版本时要注意,版本不对会导致程序无法运行,增加排除负担。
spring-boot搭配selenium-chrome爬取页面
原文:https://www.cnblogs.com/wlc-blogs/p/15246478.html