背景:
学习webmagic过程中,为了解决爬取动态网页的问题,所以使用selenium,在浏览各个博主的文章,相继添加了多个有关selenium的依赖。
报错详情:
在代码首行报错
The type org.openqa.selenium.interactions.HasTouchScreen cannot be resolved. It is indirectly referenced from required .class files
代码:
package per.nydia.spider;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class ChromeSelenium {
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", "C:Windows\\System32\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("http://www.baidu.com");
System.out.println(driver.getTitle());
driver.quit();
}
}
解决过程:
网上找了很多解决方法,但是都没用,可能不符合我的情况,比如修改jre,手动设置jre等等。
最终解决方法是,把添加的有关selesnim的selenium-java
,selenium-chrome-driver
,selenium-server
依赖包注释了,只留下webmagic-selenium
的依赖包,就没有再报错。
正确的依赖:
使用webmagic-selenium需要添加的依赖
<dependency>
<groupId>us.codecraft</groupId>
<artifactId>webmagic-core</artifactId>
<version>0.7.3</version>
</dependency>
<dependency>
<groupId>us.codecraft</groupId>
<artifactId>webmagic-extension</artifactId>
<version>0.7.3</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>us.codecraft</groupId>
<artifactId>webmagic-selenium</artifactId>
<version>0.7.3</version>
</dependency>
<!-- 用于内置浏览器内核,爬取渲染后的页面 -->
<!-- <dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.33.0</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-chrome-driver</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-server</artifactId>
<version>2.18.0</version>
</dependency> -->