java+selenium爬取图片签名

学习记录:
1.注意
对应的版本非常重要,使用selenium得下载与游览器版本相对应的插件,有火狐和谷歌我用的谷歌,贴下谷歌driver的插件:http://npm.taobao.org/mirrors/chromedriver/
查看谷歌版本:

2.插件存放路径

3.获取签名图片存放路径

4.Controller代码如下

 @ResponseBody@RequestMapping(value = "signatureGenerationv")public String signatureGeneration(String userName, HttpServletRequest request) throws Exception{System.setProperty("webdriver.chrome.driver", ".\\Tools\\chromedriver.exe");//初始化一个谷歌浏览器实例,实例名称叫driverWebDriver driver = new ChromeDriver();// get()打开一个站点driver.get("https://www.yishuzi.cn/qianming/");//签名driver.findElement(By.xpath("//*[@id=\"text\"]")).clear();driver.findElement(By.xpath("//*[@id=\"text\"]")).sendKeys(userName);//签名配色driver.findElement(By.xpath("//*[@id=\"index\"]/div[1]/div/div[4]/div[2]/div/div[7]/div/div/p[2]/a[2]")).click();//最大化窗口driver.manage().window().maximize();Thread.sleep(2000);WebElement webElement = driver.findElement(By.xpath("//*[@id=\"SaveImg\"]"));//生成签名图片,裁剪图片byte[] imageData = BrowserUtil.captureElement(webElement);//设置隐性等待时间driver.manage().timeouts().implicitlyWait(8, TimeUnit.SECONDS);//getTitle()获取当前页面title的值System.out.println("当前打开页面的标题是: "+ driver.getTitle());//关闭并退出浏览器driver.quit();//把图片转换成能够在页面直接展示的BASE64Encoder格式BASE64Encoder base64Encoder = new BASE64Encoder();String img =  base64Encoder.encode(imageData);return  img;}

5.BrowserUtil工具类代码

public static byte[] captureElement(WebElement element) throws Exception {WrapsDriver wrapsDriver = (WrapsDriver) element;// 截图整个页面byte[] screen = ((TakesScreenshot) wrapsDriver.getWrappedDriver()).getScreenshotAs(OutputType.BYTES);ByteArrayOutputStream out = new ByteArrayOutputStream();try {BufferedImage img = ImageIO.read(new ByteArrayInputStream(screen));ImageIO.write(img, "png", new File("img/imgs/img"+System.currentTimeMillis()+".png"));// 获得元素的高度和宽度int width = element.getSize().getWidth();int height = element.getSize().getHeight();// 创建一个矩形使用上面的高度,和宽度java.awt.Rectangle rect = new java.awt.Rectangle(width, height);// 得到元素的坐标Point p = element.getLocation();float rate = img.getWidth()/1280;BufferedImage dest = img.getSubimage((int)(p.getX()*rate),(int)(p.getY()*rate),(int)(rect.width*rate),(int)(rect.height*rate));ImageIO.write(dest, "png", new File("img/"+System.currentTimeMillis()+".png"));boolean flag = ImageIO.write(dest, "png", out);byte[] imageData = out.toByteArray();return imageData;} finally {out.close();}}

6.index.html代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>签名生成</title><script type="text/javascript" src="js/jquery-3.3.1.min.js"></script>
</head>
<body>
<div>请输入名字:<input type="text" id="userName" name="userName"><input type="button" id="btn" value="生成"><!--<img id="img" src="">--><div id="img"></div>
</div>
<script>$("#btn").click(function () {var userName = $("#userName").val();$.ajax({url : "signatureGenerationv",type : "post",// dataType :"string",data :{'userName':userName},success : function(data) {data = data.replace(/\\n/g,'\n')//去换行var str = data.substring(0,data.length)var base = "data:image/png;base64,"+str;var img = new Image();//创建img容器img.src = base;document.body.appendChild(img);},error : function(data) {alert("失败"+data.responseText)}})})</script>
</body>
</html>

7.结果图

8.pom包

<!--selenium依赖文件--><!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java --><dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-java</artifactId><version>3.8.1</version></dependency><!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-server --><dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-server</artifactId><version>3.8.1</version></dependency><!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-chrome-driver --><dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-chrome-driver</artifactId><version>3.8.1</version></dependency><!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-chrome-driver --><dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-chrome-driver</artifactId><version>3.8.1</version></dependency><dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-htmlunit-driver</artifactId><version>2.52.0</version></dependency><dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.5</version></dependency>

java+selenium爬取图片签名相关推荐

  1. Java+Selenium爬取JavaScript返回的网页数据

    案例:本文主要描述如何根据快递单号使用Java+Selenium爬取"爱查快递网页"快递的跟踪信息并按照设计的数据格式返回数据 解决问题:爬取JavaScript返回的网页数据(网 ...

  2. Java selenium 爬取 星图

    导入包: <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-firefox-driver --&g ...

  3. java+selenium爬取知网数据

    使用selenium工具爬取知网相关数据,思路:根据几个关键词搜索出相关的内容,然后爬取列表中所有论文的访问链接. 注意:直接爬取的链接是不能用的,需要自己拼接一下.具体看代码.新手,代码写的有点乱. ...

  4. 基于Java + selenium 爬取某网站千张图片

    预览(可以根据循环次数爬取大量图片) 一.网页分析 1 点击F12进入检查,将小箭头移到网页中随便一张图片上 2 进一步我们可以发现每一张图片的链接都包含在<ul>标签的子标签<li ...

  5. Java+Selenium爬贴吧

    想爬贴吧很多年了,一直拖到现在.前几天心血来潮,决定搞起. 大致思路如下: 启动driver>进入贴吧第一页>通过getPageUrls方法获取所有帖子的url和标题>找到下一页按钮 ...

  6. 用Java和webmagic爬取图片并下载到本地(动态网页)

    上篇记录了一下用java代码爬取图片并下载到本地的代码,但是那只是对于一张图片.如果要很多图片的话, 就需要把代码改一下.如果是静态页面,可以不用webmagic(不过用webmagic更加方便):动 ...

  7. java图片简单爬虫_[Java教程]使用jsoup进行简单的爬虫操作爬取图片

    [Java教程]使用jsoup进行简单的爬虫操作爬取图片 0 2015-12-01 17:00:27 package com.guanglan.util;import java.io.File;imp ...

  8. java怎样模拟点击网页,笔者操作Java+selenium实现网站模拟点击和页面数据爬取

    电脑现已成为我们工作.生活和娱乐必不可少的工具了,在使用电脑的过程中,可能会遇到Java+selenium实现网站模拟点击和页面数据爬取的问题,如果我们遇到了Java+selenium实现网站模拟点击 ...

  9. java+selenium,40行代码完成支付宝账单爬取

    java+selenium,40行代码完成支付宝账单爬取 需要jar selenium-server-4.0.0-alpha-5.jar 需要驱动 chromedriver.exe 驱动需要和浏览器版 ...

  10. Java爬虫批量爬取图片

    Java爬取图片(2020年3月) 现在开始学习爬虫,对于爬虫的入门来说,图片相对来说是比较容易获取的,因为大部分图片都不是敏感数据,所以不会遇到什么反爬措施,对于入门爬虫来说是比较合适的. 使用技术 ...

最新文章

  1. 换掉VMware?轻量级虚拟机,横空出世!
  2. UOJ #164 [清华集训2015]V (线段树)
  3. spring集成 JedisCluster 连接 redis3.0 集群
  4. 国内第一本项目管理的实践书籍——《IT项目管理那些事儿》
  5. SharePoint REST API - 一个请求批量操作
  6. node 后台重定向_node.js – 使用NodeJS重定向客户端并重新定义
  7. sklearn使用小记GridSearchCV
  8. 覆了天下也罢,始终不过一场繁华
  9. 友盟分享 qq没有存储权限 分享失败
  10. 前端基础01 HTML
  11. IP Routing 概述
  12. 解决阿里巴巴JSONObject工具 com.alibaba.fastjson.JSONObject cannot be cast to 的问题
  13. 牛客网算法课程优惠码
  14. 计算机网络英文论文,计算机网络与因特网论文(英文版)
  15. 项目管理的核心要素——时间、成本与质量
  16. python情感分析步骤_使用python+机器学习方法进行情感分析(详细步骤)
  17. Spring 4 Hello World 例子(带源码)
  18. nginx如何查看版本号和编译参数
  19. rospkg.common.ResourceNotFound: ×××××报错
  20. Qt扫盲-Qt Designer 设计师使用总结

热门文章

  1. 细说大话西游中的经典元素
  2. CSS属性之relative
  3. 已解决urllib.error.HTTPError: HTTP Error 403: Forbidden
  4. redux 多种触发dispatch方式
  5. 一种 Python 获取时间序列数据集的方式
  6. 《龙腾世纪2》图文流程攻略
  7. 华为手机记事本导出_华为手机便签记事本怎么找到
  8. 计算机应用高级教程,计算机应用高级教程教学大纲.doc
  9. [渝粤教育] 广东-国家-开放大学 21秋期末考试土木工程施工10516k1
  10. python输出文本框_python如何使用文本框