基于selenium-java封装chrome、firefox、phantomjs实现爬虫
作者:zhouhao1256 发布时间:2022-04-07 19:04:28
2017年一直以来在公司负责爬虫项目相关工程,主要业务有预定、库存、在开发中也遇到很多问题,随手记录一下,后续会持续更新。
chrome、firefox、phantomjs插件安装和版本说明
基于selenium-java封装chrome、firefox、phantomjs实现爬虫
项目下载地址
maven版本说明
<!-- +++|selenium|+++ -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.5.1</version>
</dependency>
<!-- +++|phantomjsdriver|+++ -->
<dependency>
<groupId>com.github.detro.ghostdriver</groupId>
<artifactId>phantomjsdriver</artifactId>
<version>1.1.0</version>
</dependency>
chrome插件配置
下载地址:chromedriver下载地址选择本地系统对应的chrome版本安装,工程下面有一个 对应的目录是:Plugin/chromedriver_win32.zip
,对应chrmoe版本是Supports Chrome v60-62
直接运行项目中示例
public class ChromeTest {
public static void main(String[] args) {
WebDriver webDriver = null;
try {
webDriver = WebDriverUtil.createChromeWebDriver("D:\\webdrvier\\chromedriver.exe");//修改路径
webDriver.get("https://www.baidu.com/");
System.out.println(webDriver.getTitle());
} catch (Exception e) {
e.printStackTrace();
} finally {
if (webDriver != null) {
webDriver.close();
}
}
}
}
chrome配置插件是最简单的,linux上面只需要把插件换成linux版本即可
firefox
下载插件地址:geckodriver下载地址,选择本地系统对应的firefox版本安装,工程下面有一个 对应的目录是:Plugin/geckodriver-v0.18.0-win64.zip
,对应firefox版本是Firefox Setup 50.0(64位)
、其他版本没有测试过
firefox下载地址、selenium-java版本和geckodriver版本更新迭代不一致,导致在搭建环境时很容易出现一系列问题。
直接运行项目中示例
public class FireFoxTest {
public static void main(String[] args) {
WebDriver webDriver = null;
try {
webDriver = WebDriverUtil.createFirefoxWebDriver("D:\\webdrvier\\Firefox\\geckodriver_18.exe");
webDriver.get("https://book.douban.com/tag/");
Set<String> tagSet = new HashSet<>();
//获取豆瓣标签
List<WebElement> divWebElement = webDriver.findElements(By.cssSelector("#content > div > div.article > div:nth-child(2) > div"));
for (WebElement webElement : divWebElement) {
List<WebElement> aWebElement = webElement.findElements(By.cssSelector("a"));
for (WebElement element : aWebElement) {
tagSet.add(element.getText());
}
}
System.out.println(tagSet);
//点击小说标签
WebElement webElement = webDriver.findElement(By.cssSelector("#content > div > div.article > div:nth-child(2) > div:nth-child(1) > table > tbody > tr:nth-child(1) > td:nth-child(1) > a"));
webElement.click();
System.out.println(webDriver.getTitle());
} catch (Exception e) {
e.printStackTrace();
} finally {
if (webDriver != null) {
webDriver.quit();
webDriver.close();
}
}
}
}
phantomjs
下载插件地址phantomjs插件地址1、phantomjs插件地址2、下载有些慢。phantomjs是没有界面的,所以只需要下载插件即可。
直接运行项目中示例
public class PhantomjsTest {
public static void main(String[] args) {
WebDriver webDriver = null;
try {
webDriver = WebDriverUtil.createPhantomjsWebDriver("D:/webdrvier/phantomjs-1.9.8-windows/phantomjs.exe");
webDriver.get("https://www.baidu.com/");
System.out.println(webDriver.getTitle());
} catch (Exception e) {
e.printStackTrace();
} finally {
if (webDriver != null) {
webDriver.close();
}
}
}
}
来源:https://blog.csdn.net/zhouhao1256/article/details/78543286


猜你喜欢
- 前言最近在Android Automotive 上遇到的一些问题,有好几个都跟Android 车载操作系统上应用的驾驶模式有关,国内这方面的
- C#编写winform程序时,用到的,格式强转,存储到数据库,数据库连接那块就不写了希望对大家有帮助,欢迎评论互相分享技术!//日期格式强制
- 本文实例为大家分享了Java Socket编程实现多人交互聊天室的具体代码,供大家参考,具体内容如下本项目由三个.java文件(
- 要说this和super就不得不说Java的封装和继承了,首先说封装,这是一种思想,算不上一种技术,核心思想就是将对象的同一行为和状态看成是
- 1.简介if判断语句是很多编程语言的重要组成部分。但是,若我们最终编写了大量嵌套的if语句,这将使得我们的代码更加复杂和难以维护。让我们看看
- 一、TimerTimer是Android直接启动定时器的类,TimerTask是一个子线程,方便处理一些比较复杂耗时的功能逻辑,经常与han
- 在 C# 语言中 StreamReader 类用于从流中读取字符串。它继承自 TextReader 类。StreamReader 类的构造方
- import java.util.ArrayList;import java.util.List;public class Test2 {&
- 这篇文章主要介绍了如何基于Java实现对象List排序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋
- json好久没用了,今天在用到json的时候,发现对字符串做解析的时候总是多出双引号。代码如下:string jsonText = &quo
- 前言前不久遇到一个问题,是公司早期的基础库遇到的,其实很低级,但是还是记录下来。出错点是一个 IO 流的写入bug,我们项目会有一种专有的数
- RabbitMQ主要有六种种工作模式,本文整合SpringBoot分别介绍工作模式的实现。前提概念生产者消息生产者或者发送者,使用P表示:队
- 目录Java反射超详解1.反射基础1.1Class类1.2类加载2.反射的使用2.1Class对象的获取 2.2Construct
- 本篇分析ArrayList的源码,在分析之前先跟大家谈一谈数组。数组可能是我们最早接触到的数据结构之一,它是在内存中划分出一块连续的地址空间
- 1. JWT的概念和特点JWT是一种轻量级、可扩展、可自包含的身份验证和授权机制。它是由三个部分组成:头部(Header)、载荷(Paylo
- import java.util.Arrays;public class HeapSort { publ
- 通过eclipse修改web的url访问路径今天做SpringMVC 基础跳转网页的时候发现了一个问题,就是eclipse访问url路径的问
- Google在2015的IO大会上,给我们带来了更加详细的Material Design设计规范,同时,也给我们带来了全新的Android
- 在Android中,在非主线程中更新UI控件是不安全的,app在运行时会直接Crash,所以当我们需要在非主线程中更新UI控件,那么就需要用
- 前言:这段时间由于学校实行静态化管理,寝室门和校门都是用了人脸识别的装置,每次经过都会激发我的好奇心,也想自己搞一个人脸识别玩玩,随着开始查