使用selenium网页截图,解决截图不全问题
#!/usr/bin/python3
# -*- coding:utf-8 -*-import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from PIL import Imagedef screenshot_to_pdf_and_png(link):''' 参数:网址功能: 保存网址截图解决了截图不全问题解决了懒加载问题保存俩种图片格式'''path = './'# 1> 获取chrome参数对象chrome_options = Options()# 2> 添加无头参数r,一定要使用无头模式,不然截不了全页面,只能截到你电脑的高度chrome_options.add_argument('--headless')# 3> 为了解决一些莫名其妙的问题关闭 GPU 计算chrome_options.add_argument('--disable-gpu')# 4> 为了解决一些莫名其妙的问题浏览器不动chrome_options.add_argument('--no-sandbox')# 5> 添加驱动地址。 由于在函数内,设置参数chrome_options需要再导入driver = webdriver.Chrome(executable_path=r'D:\银联工作\test\chromedriver.exe' ,chrome_options=chrome_options)# 6> 模仿手动滑动滚动条,解决懒加载问题try:driver.implicitly_wait(20)driver.get(link)# 模拟人滚动滚动条,处理图片懒加载问题js_height = "return document.body.clientHeight"driver.get(link)k = 1height = driver.execute_script(js_height)while True:if k * 500 < height:js_move = "window.scrollTo(0,{})".format(k * 500)print(js_move)driver.execute_script(js_move)time.sleep(0.2)height = driver.execute_script(js_height)k += 1else:breaktime.sleep(1)# 7> # 直接截图截不全,调取最大网页截图width = driver.execute_script("return Math.max(document.body.scrollWidth, document.body.offsetWidth, document.documentElement.clientWidth, document.documentElement.scrollWidth, document.documentElement.offsetWidth);")height = driver.execute_script("return Math.max(document.body.scrollHeight, document.body.offsetHeight, document.documentElement.clientHeight, document.documentElement.scrollHeight, document.documentElement.offsetHeight);")print(width, height)# 将浏览器的宽高设置成刚刚获取的宽高driver.set_window_size(width + 100, height + 100)time.sleep(1)png_path = path + '/{}.png'.format('xx网址截图')# 截图并关掉浏览器driver.save_screenshot(png_path)driver.close()# png转pdfimage1 = Image.open(png_path)im1 = image1.convert('RGB')pdf_path = png_path.replace('.png', '.pdf')im1.save(pdf_path)except Exception as e:print(e)if __name__ == '__main__':screenshot_to_pdf_and_png("http://www.douban.com")
使用selenium网页截图,解决截图不全问题相关推荐
- [python]利用Selenium实现网页全屏截图+部分截图并web实现
好久都没有写文章了,今天记录一下. 实现目标 我的目标是输入一段网址,能够得到该网页的一部分截图. 思路: 根据网址打开网页 先全屏截图,再保存成图片 之后对这张图片进行部分截图 代码 我不需要滚动截 ...
- Python将网页转化为PDF(python网页自动长截图)
初次实践:python网页自动截图 步骤如下: (1) 安装python selenium 库,推荐使用pip快速安装最新版本 pip install selenium (2) 检查Chrome浏览器 ...
- 微信长按网页保存为截图
本文是我处理问题时看到的一篇博客,感觉很详细,所以保存了, 原文地址 H5项目中的一个重要功能需求:实现微信长按网页保存为截图. 这里有个栗子(请用微信打开,长按图片即可保存):3分钟探索你的知识边界 ...
- 怎么在html中复制粘贴图片,在网页中粘贴截图那些事儿
原标题:在网页中粘贴截图那些事儿 (点击上方公众号,可快速关注) 作者:郑武江(@OAuth_v2) 链接:seejs.me/2016/11/30/paste-snapshot/ 做这个尝试,只为了解 ...
- WEB自动化(4)使用selenium将网站验证码截图保存为本地图片
WEB自动化(1)环境安装及打开浏览器实例 WEB自动化(2)常用的元素定位方法之xpath详解 WEB自动化(3)PO设计模式原理与实现 WEB自动化(4)使用selenium将网站验证码截图保存为 ...
- 计算机截图工具无法运行,win10系统打开截图工具提示“截图工具当前未在计算机上运行”的解决办法...
win10系统使用久了,好多网友反馈说win10系统打开截图工具提示"截图工具当前未在计算机上运行"的问题,非常不方便.有什么办法可以永久解决win10系统打开截图工具提示&quo ...
- 如何实现网页版滚动截图
如何实现网页版滚动截图 不是长截图,只截图当前页面的话使用QQ截图(Ctrl+Shift+a)微信截图(Alt+a)即可 方法一 工具:浏览器即可 按键盘上的F12按键,打开浏览器的console菜单 ...
- Leaflet框选截图 网页框选截图 -- 类似QQ截图功能
Leaflet框选截图 网页框选截图 -- 类似QQ截图功能 功能需求 搜索资源 功能拆分 进阶功能 结束语 实现截图(红框中即是将要截取的内容) 下载到本地的截图 功能需求 近日. 项目中有一需求: ...
- python selenium UI自动化解决验证码的4种方法
测试环境 windows7+ firefox50+ geckodriver # firefox浏览器驱动 python3 selenium3 selenium UI自动化解决验证码的4种方法:去掉验证 ...
最新文章
- 我总结的js性能优化的小知识
- hadoop 回收站Trash
- 关于搞技术的一点思考
- html5的元素拖拽
- 增量式光电编码器原理及其结构
- 流计算及在特来电监控引擎中的实践
- 在地址栏直接使用Google“手气不错”功能
- 电脑视频怎么录制?好用的电脑录屏方法
- python取excel单元格数值_python读取excel文件单元格中的数据返回类型
- history 路由 vs hash 路由 vs location.href 实现跳转
- 手游无限多开器安卓版_手游多开器安卓版-手游多开器手机版 _5577安卓网
- 嵌入式软件管培生每日总结-第2天
- java取得对象占用的内存大小
- 中美加征关税HS码清单列表
- C++ 利用 windbg + dump + map + cod 文件分析 crash 原因
- 部署并安装Discuz论坛
- eclipse注释字体大小显示不一样大
- 8000 sentences of Oral English(three)
- Kali安装w3af详细教程
- java读取pdf多表格_在Java中使用tabula提取PDF中的表格数据