当前位置: 首页 > news >正文

万网网站根目录h5网站和传统网站区别

万网网站根目录,h5网站和传统网站区别,高端网站开发有哪些,关键词查找的方法有以下几种chromedriver是谷歌浏览器驱动,用来模拟谷歌运行操作的一个工具,此处主要讲解Java后端利用此插件进行网页截图,并且适配Linux部署。 环境准备 Wondows服务器或电脑 本机需安装Chrome谷歌浏览器,根据本机浏览器版本,下载对应的chr…

chromedriver是谷歌浏览器驱动,用来模拟谷歌运行操作的一个工具,此处主要讲解Java后端利用此插件进行网页截图,并且适配Linux部署。

环境准备
Wondows服务器或电脑
本机需安装Chrome谷歌浏览器,根据本机浏览器版本,下载对应的chromedriver版本,chromedrive插件下载地址: 谷歌chromeDriver插件地址,下载后解压即可。PS:网上看到许多需要配置环境变量的,实测根本不需要。
注意:插件版本和本机浏览器版本一定要对应

Linux服务器
安装Chrome

yum install https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm

查看版本

google-chrome --version

根据版本下载插件,chromedrive插件下载地址:https://registry.npmmirror.com/binary.html?path=chromedriver/,选择Linux版,上传到服务器后解压,上面默认安装最新版本。

// 解压
unzip chromedriver_linux64.zip 
// 赋权
chmod 777 chromedriver
// 安装浏览器中文字体
yum -y groupinstall Fonts

Java代码部分

引入maven

 <!-- 浏览器截图jar包 --><dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-java</artifactId><version>3.141.59</version></dependency><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>27.0-jre</version></dependency>

截图工具方法类

代码里面用到的是ChromeDriverService启动,还有一种是:
ChromeDriver driver = new ChromeDriver(options);
System.setProperty(“webdriver.chrome.driver”, “/data/server/legal-document-library-task/chromedriver”);
这种在高并发,频繁截图时会遇到ChromeDriver插件未正常关闭的情况,会占用端口或内存。推荐使用ChromeDriverService方式。

public String imgUntil(String url){ChromeDriver driver = null;FileInputStream inputFile = null;ChromeDriverService service = null;try {//(推荐),利用ChromeDriverService启动//这里"/data/server/legal/chromedriver"是下载的驱动路径,Windows对应chromedriver.exe Linux对应chromedriver,具体路径看你把驱动放在哪service = new ChromeDriverService.Builder().usingDriverExecutable(new File("/data/server/legal/chromedriver")).usingAnyFreePort().build();service.start();ChromeOptions options = new ChromeOptions();//ssl证书支持options.setCapability("acceptSslCerts", true);//截屏支持options.setCapability("takesScreenshot", true);//css搜索支持options.setCapability("cssSelectorsEnabled", true);//设置浏览器参数options.addArguments("--headless");options.addArguments("--no-sandbox");options.addArguments("--disable-gpu");options.addArguments("--disable-dev-shm-usage");options.setHeadless(true);driver = new ChromeDriver(service,options);//设置超时,避免有些内容加载过慢导致截不到图driver.manage().timeouts().pageLoadTimeout(1, TimeUnit.MINUTES);driver.manage().timeouts().implicitlyWait(1, TimeUnit.MINUTES);driver.manage().timeouts().setScriptTimeout(1, TimeUnit.MINUTES);//设置需要访问的地址driver.get(url);Thread.sleep(2000);//获取高度和宽度一定要在设置URL之后,不然会导致获取不到页面真实的宽高;Long width = (Long)driver.executeScript("return document.documentElement.scrollWidth");Long height =(Long) driver.executeScript("return document.body.parentNode.scrollHeight");System.out.println("高度:"+height);/*//这里按照网页需求有些是滑动的时候才加在的,如ajax的异步加载long temp_height = 0;while (true) {//每次滚动500个像素,因为懒加载所以每次等待2S 具体时间可以根据具体业务场景去设置driver.executeScript("window.scrollBy(0,500)");temp_height += 500;if(temp_height>=height){break;}}*///设置窗口宽高,设置后才能截全driver.manage().window().setSize(new Dimension(width.intValue(), height.intValue()));File srcFile = driver.getScreenshotAs(OutputType.FILE);// 这里的需求是将图片转为Base64码后换回,实际按需求控制inputFile = new FileInputStream(srcFile);byte[] buffer = new byte[(int)srcFile.length()];inputFile.read(buffer);String content = new BASE64Encoder().encode(buffer);return content;//设置截图文件保存的路径//String screenshotPath = "C:\\wenjian\\YA\\imgGG1.png";//FileUtils.copyFile(srcFile, new File(screenshotPath));}catch (Exception e){e.printStackTrace();log.error("截图失败:"+e);return null;}finally {try{if (inputFile != null){inputFile.close();}}catch (Exception ee){}if (driver!= null){driver.quit();service.stop();}}}

工具2

全面截屏//配置本地的chromediver.exe谷歌的内核System.setProperty("webdriver.gecko.driver", "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe");//设置ChromeOptions打开方式,设置headless:不弹出浏览器//设置好使用ChromeDriver使用ChromeDriver driver = new ChromeDriver();    driver.get("https://www.jianshu.com/u/a2b05c68b03b");//设置浏览器弹窗页面的大小driver.manage().window().maximize();//使用getScreenshotAs进行截取屏幕File srcFile = driver.getScreenshotAs(OutputType.FILE);  FileUtils.copyFile(srcFile, new File("G:\\pyChar\\jj.png")); 长截屏//配置本地的chromediver.exe谷歌的内核System.setProperty("webdriver.gecko.driver", "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe");//设置ChromeOptions打开方式,设置headless:不弹出浏览器ChromeOptions options = new ChromeOptions();options.addArguments("headless");//设置好使用ChromeDriver使用ChromeDriver driver = new ChromeDriver(options);    //获取要截图的地址,注:需要先获取地址哦,不然下方获取的宽度高度就会是弹窗的高和宽,而不是页面内容的高宽driver.get("https://www.jianshu.com/u/a2b05c68b03b");//获取页面高宽使用:return document.documentElement.scrollWidth//Long width = (Long)driver.executeScript("return document.documentElement.scrollWidth");// Long height =(Long) driver.executeScript("return document.documentElement.scrollHeight");Long width = (Long) ((JavascriptExecutor)driver).executeScript("return document.documentElement.scrollWidth");Long height = (Long) ((JavascriptExecutor)driver).executeScript("return document.documentElement.scrollHeight");//设置浏览器弹窗页面的大小driver.manage().window().setSize(new Dimension(width.intValue(), height.intValue()));//使用getScreenshotAs进行截取屏幕File srcFile = driver.getScreenshotAs(OutputType.FILE);  FileUtils.copyFile(srcFile, new File("G:\\pyChar\\jj.png"));    元素截图使用方法WebElement findElementByXPath = ToolDriver.findElement(By.xpath("//*[@id=\"s_lg_img\"]"));File screenshotAs = findElementByXPath.getScreenshotAs(OutputType.FILE);String prName = "src/main/resources/" + "Toolimg" + ".png";try {FileUtils.copyFile(screenshotAs, new File(prName));} catch (IOException e) {e.printStackTrace();}
--全面截图再截图
File src = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
WebElement element = driver.findElement(By.xpath("//div[@class='msn']"));Rectangle rect = element.getRect();
BufferedImage subImage= ImageIO.read(src).getSubimage(rect.x, rect.y, rect.getWidth(), rect.height);
ImageIO.write(subImage, "png", src);
http://www.yayakq.cn/news/558900/

相关文章:

  • 网页制作与网站建设实战大全 pdf免费博客网站有哪些
  • 商城型外贸网站建设seo营销培训
  • 自己建设网站怎么做怎么建立网站文件夹
  • 免费卡盟网站建设番禺网站(建设信科网络)
  • 做网站时候图片和视频放在哪里网站域名所有权
  • 教育网站建设公司推荐广州手机网站定制
  • 微信小程序联盟网站怎么用 c文件做网站
  • 介绍自己做衣服的网站如何使用电子商务网站
  • 企业网站备案条件网页字体尺寸设计
  • 做h5那个网站模板好男性早些泄吃什么药可以根治
  • 机械网站精选开发一个微信小程序价格
  • 网站开发外包维护合同广西高端网站建设
  • 有个人免费网站吗企业 官网
  • 郑州市经开区建设局网站孟村县网站建设公司
  • 做网站的好项目qq手机版
  • 软件网站开发平台建筑工程与土木工程区别
  • 学会网站开发有什么好处wordpress国外主题改版权
  • 常德网站优化哪家好wordpress 推广返利
  • 青岛网站建设模板下载一个完整的电商网站开发周期
  • 河北石家庄网站成都专业建设网站
  • 响应式网站是做列表网站的首页面设计
  • 中国外贸网站排名如何建设网站简答题
  • 广州专业的做网站福州网站建设外包
  • 广东省建设教育协会官方网站股票大宗交易平台
  • 网站空间管理小型企业的网站建设论文
  • 免费网站服务器加强校园网站建设
  • wordpress网站模板网站后台设置应注意什么
  • 合肥网页设计多少钱贵阳网站建设seo公众号开发
  • 银川网站制作杭州建设工程招标网新址
  • 新手怎么做网站建立网站