需要的添加的jar包及工具:我这里使用maven来构建项目,添加依赖如下:

<dependency>
  <groupId>org.seleniumhq.selenium</groupId>
  <artifactId>selenium-java</artifactId>
  <version>3.2.0</version>
</dependency>  

PhantomJs工具到官网去下载:http://phantomjs.org/download.html

尽量都使用最新版本,不然会出现版本兼容的情况。

这里有一个已经写好的获取PhantomJSDriver的工具类

public static WebDriver getPhantomJs() {
  String osname = System.getProperties().getProperty("os.name");
  if (osname.equals("Linux")) {//判断系统的环境win or Linux
    System.setProperty("phantomjs.binary.path", "/usr/bin/phantomjs");
  } else {
    System.setProperty("phantomjs.binary.path", "./phantomjs/win/phantomjs.exe");//设置PhantomJs访问路径
  }
  DesiredCapabilities desiredCapabilities = DesiredCapabilities.phantomjs();
  //设置参数
  desiredCapabilities.setCapability("phantomjs.page.settings.userAgent", "Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:50.0) Gecko/20100101 Firefox/50.0");
  desiredCapabilities.setCapability("phantomjs.page.customHeaders.User-Agent", "Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:50.0) Gecko/20100101   Firefox/50.0");
  if (Constant.isProxy) {//是否使用代理
    org.openqa.selenium.Proxy proxy = new org.openqa.selenium.Proxy();
    proxy.setProxyType(org.openqa.selenium.Proxy.ProxyType.MANUAL);
    proxy.setAutodetect(false);
    String proxyStr = "";
    do {
      proxyStr = ProxyUtil.getProxy();//自定义函数,返回代理ip及端口
    } while (proxyStr.length() == 0);
    proxy.setHttpProxy(proxyStr);
    desiredCapabilities.setCapability(CapabilityType.PROXY, proxy);
  }
  return new PhantomJSDriver(desiredCapabilities);
}

获取方式  

  try{
    WebDriver webDriver = PhantomJsUtil.getPhantomJs();
    webDriver.get(url);
    SleepUtil.sleep(Constant.SEC_5);
    PhantomJsUtil.screenshot(webDriver);
    WebDriverWait wait = new WebDriverWait(webDriver, 10);
    wait.until(ExpectedConditions.presenceOfElementLocated(By.id(inputId)));//开始打开网页,等待输入元素出现
    Document document = Jsoup.parse(webDriver.getPageSource());

    //TODO  剩下页面的获取就按照Jsoup获取方式来做

  }finally{
    if (webDriver != null) {
      webDriver.quit();
    }
  }

python版使用webdriver+PhantomJs爬虫使用,参考http://www.cnblogs.com/kuqs/p/6395284.html

WebDriver+PhantomJs爬虫运用(Java)的更多相关文章

  1. 用webdriver+phantomjs实现无浏览器的自动化过程

    环境准备 1. 安装python: 2. 安装pip: 3. 通过pip安装selenium: 4. 下载phantomJS的包并解压缩: 1. 若在Windows系统中,将下载的phantomjs文 ...

  2. 使用webdriver + phantomjs + pdfkit 生成PDF文件

    实例 #!/usr/bin/python # -*- coding: utf-8 -*- ''' Created on Dec 6, 2013 @author: Jay <smile665@gm ...

  3. Python PhantomJS 爬虫 示例

    from selenium import webdriver# 请求url url = "https://auctions.freemansauction.com/auction-lot-d ...

  4. selenium+phantomJS爬虫,适用于登陆限制强,点触验证码等一些场景

    selenium是非常出名的自己主动化測试工具,多数场景是測试project师用来做自己主动化測试,可是相同selenium能够作为基本上模拟浏览器的工具,去爬取一些基于http request不能或 ...

  5. 【零基础】Selenium:Webdriver图文入门教程java篇(附相关包下载)

    一.selenium2.0简述 与一般的浏览器测试框架(爬虫框架)不同,Selenium2.0实际上由两个部分组成Selenium+webdriver,Selenium负责用户指令的解释(code), ...

  6. 网络爬虫(java)

       陆陆续续做了有一个月,期间因为各种技术问题被多次暂停,最关键的一次主要是因为存储容器使用的普通二叉树,在节点权重相同的情况下导致树高增高,在进行遍历的时候效率大大降低,甚至在使用递归的时候导致栈 ...

  7. 用WebCollector制作一个爬取《知乎》并进行问题精准抽取的爬虫(JAVA)

    简单介绍: WebCollector是一个无须配置.便于二次开发的JAVA爬虫框架(内核),它提供精简的的API.仅仅需少量代码就可以实现一个功能强大的爬虫. 怎样将WebCollector导入项目请 ...

  8. Selenium WebDriver TestNg Maven Eclipse java 简单实例

    环境准备 前提条件Eclipse 已经安装过 TestNg ,Maven 插件 新建一个普通的java项目 点击右键 configure->convert to Maven Project 之后 ...

  9. phantomjs的使用+Java代码+依赖js(兼容Linux和windows版本)

    1.  在使用phantomjs的时候需要下载phantomjs,网上有window版本和Linux版本.将phantomjs放在Linux上的指定位置之后(如下面的/home/tpl/phantom ...

随机推荐

  1. WEKA “Detailed Accuracy By Class”和“Confusion Matrix”含义

    原文 === Summary ===(总结) Correctly Classified Instances(正确分类的实例)          45               90      % I ...

  2. mysql允许外网访问 和修改mysql 账号密码

    mysql的root账户,我在连接时通常用的是localhost或127.0.0.1,公司的测试服务器上的mysql也是localhost所以我想访问无法访问,测试暂停. 解决方法如下: 1,修改表, ...

  3. 通过JavaScript让页面只刷新一次

    1.充分利用地址栏可带参数的选项,用脚本来取得页面间的传递参数,并不需要后台程序的支持. 2.函数名 function reurl(){ url = location.href; //把当前页面的地址 ...

  4. JMeter5.0核心源码浅析[转]

    [转自:https://blog.csdn.net/zuozewei/article/details/85042829] 源码下载地址:https://github.com/apache/jmeter ...

  5. GitHub Port 443 Refused

    最近在本地Github上传和更新远程仓库的时候老是显示 GitHub - failed to connect to github 443 windows/ Failed to connect to g ...

  6. 跨域请求配置 Amazon AWS S3 腾讯云 阿里云 COS OSS 文件桶解决方案以及推荐 Lebal:Research

    跨域请求配置 跨域请求指的就是不同的域名和端口之间的访问.由于 ajax 的同源策略影响.跨域请求默认是不被允许的. 使用@font-face外挂字体时,可能遇到跨域请求CROS问题:F12控制台报错 ...

  7. 缓存融合(Cache Fusion)介绍

    概念 简单地说,缓存融合就是把Oracle RAC数据库中所有数据库缓存作为一个共享的数据库缓存,并被RAC中的所有节点共享.它是实现RAC的基本技术. 缓存融合主要有如下四个功能: (1) 提供扩展 ...

  8. Professional JavaScript for Web Developers P224-P225

    然后第二段代码执行过程中,有1个global variabe object,1个createFunction activation object,10个anonymous function1 acti ...

  9. java:JavaScript2:(setTimeout定时器,history.go()前进/后退,navigator.userAgent判断浏览器,location.href,五种方法获取标签属性,setAttribute,innerHTML,三种方法获取form表单信息,JS表单验证,DOM对象,form表单操作)

    1.open,setTimeout,setInterval,clearInterval,clearTimeout <!DOCTYPE> <html> <head> ...

  10. eetCode刷题-递归篇

    递归是算法学习中很基本也很常用的一种方法,但是对于初学者来说比较难以理解(PS:难点在于不断调用自身,产生多个返回值,理不清其返回值的具体顺序,以及最终的返回值到底是哪一个?).因此,本文将选择Lee ...