序
PhantomJS是个好东东,很多时候爬虫需要用到,但是这个有windows、linux、mac的版本,想要跨平台的话,需要自己再处理一下,幸好有了phanbedder帮我们做了这个事情,这样就引一下jar包就完事了。
Selenium以及Phantom JS
Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE、Mozilla Firefox、Chrome等。 Phantom JS是一个服务器端的 JavaScript API 的 WebKit。其支持各种Web标准: DOM 处理, CSS 选择器, JSON, Canvas, 和 SVG。
maven
代码语言:javascript复制 <dependency>
<groupId>net.anthavio</groupId>
<artifactId>phanbedder-2.1.1</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.github.detro.ghostdriver</groupId>
<artifactId>phantomjsdriver</artifactId>
<version>1.1.0</version>
</dependency>
官网给的这个实际跑起来有点问题,报错
代码语言:javascript复制Caused by: java.lang.ClassNotFoundException: org.openqa.selenium.browserlaunchers.Proxies
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 29 more
需要更换一下
代码语言:javascript复制<dependency>
<groupId>net.anthavio</groupId>
<artifactId>phanbedder-2.1.1</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.45.0</version>
</dependency>
<dependency>
<groupId>com.codeborne</groupId>
<artifactId>phantomjsdriver</artifactId>
<version>1.2.1</version>
<!-- this will _always_ be behind -->
<exclusions>
<exclusion>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
</exclusion>
<exclusion>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-remote-driver</artifactId>
</exclusion>
</exclusions>
</dependency>
验证
代码语言:javascript复制 //Phanbedder to the rescue!
File phantomjs = Phanbedder.unpack();
DesiredCapabilities dcaps = new DesiredCapabilities();
dcaps.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, phantomjs.getAbsolutePath());
PhantomJSDriver driver = new PhantomJSDriver(dcaps);
driver.setLogLevel(Level.INFO);
//Usual Selenium stuff...
driver.get("https://www.google.com");
WebElement query = driver.findElement(By.name("q"));
query.sendKeys("Phanbedder");
query.submit();
System.out.println(driver.getTitle());
driver.quit();
doc
- phanbedder
- Cannot use PhantomJS with selenium-java 2.44.0 #8088
- selenium webdriver的各种driver
- 数据抓取的艺术(一):Selenium Phantomjs数据抓取环境配置