python实现网页长截图

  • 实现思路
  • 使用工具和第三方库
  • 参考内容网址
  • 具体代码案例

实现思路

  1. 获取到所需内容
  2. 截图、移动、截图、移动…
  3. 拼接

使用工具和第三方库

  1. Python、Pycharm
  2. PIL
  3. selenium
  4. webdriver安装

参考内容网址

  1. selenium网址
    https://www.selenium.dev/documentation/en/webdriver/
  2. webdriver安装
    https://blog.csdn.net/weixin_43333607/article/details/115370243

具体代码案例

from selenium import webdriver
from PIL import Image
import time
def short_sc(el,b):start_higth = el.location["y"]js = "scrollTo(0,%s)" % (start_higth)b.execute_script(js) # 执行jstime.sleep(0.5)fp = r"D:\Workspace\HandleData\Picture\test.png" # 图片地址b.get_screenshot_as_file(fp)img = Image.open(fp=fp)img2 = img.crop((el.location["x"], 0, el.size["width"] + el.location["x"], el.size["height"])) # 剪切图片img2.save(fp)
def long_sc(el,b):count = int(el.size["height"] / sc_hight) # 元素的高度除以你每次截多少就是次数start_higth = el.location["y"] # 元素的初始高度max_px = start_higth + (count - 1) * sc_hight # for循环中最大的pxlast_px = el.size["height"] + start_higth - sc_hight # 元素最底部的位置surplus_px = last_px - max_px # 剩余的边的高度img_path = [] # 用来存放图片地址for i in range(0, count):js = "scrollTo(0,%s)" % (start_higth + i * sc_hight) # 用于移动滑轮b.execute_script(js) # 执行jstime.sleep(0.5)fp = r"D:\Workspace\HandleData\Picture\%s.png" % i # 图片地址,运行的话,改一下b.get_screenshot_as_file(fp) # 屏幕截图,这里是截取是完整的网页图片,你可以打断点看一下图片img = Image.open(fp=fp)img2 = img.crop((el.location["x"], 0, el.size["width"] + el.location["x"], sc_hight)) # 剪切图片img2.save(fp) # 保存图片,覆盖完整的网页图片img_path.append(fp) # 添加图片路径time.sleep(0.5)print(js)else:js = "scrollTo(0,%s)" % last_px # 滚动到最后一个位置b.execute_script(js)fp = r"D:\Workspace\HandleData\Picture\last.png"b.get_screenshot_as_file(fp)img = Image.open(fp=fp)print((el.location["x"], sc_hight - surplus_px, el.size["width"] + el.location["x"], sc_hight))img2 = img.crop((el.location["x"], sc_hight - surplus_px, el.size["width"] + el.location["x"], sc_hight))img2.save(fp)img_path.append(fp)print(js)new_img = Image.new("RGB", (el.size["width"], el.size["height"])) # 创建一个新图片,大小为元素的大小k = 0for i in img_path:tem_img = Image.open(i)new_img.paste(tem_img, (0, sc_hight * k)) # 把图片贴上去,间隔一个截图的距离k += 1else:new_img.save(r"D:\Workspace\HandleData\Picture\test.png") # 保存driver=r"C:\Program Files\Google\Chrome\Application\chromedriver.exe"
b=webdriver.Chrome(executable_path=driver)#指定一下driver
b.get("https://www.w3school.com.cn/html/html_links.asp")
b.maximize_window()#最大化窗口
# b.get_screenshot_as_file(fp)
sc_hight=840#你屏幕截图默认的大小,
# 相当于索引的方式,这个使用标签索引,body可以获取全屏
el=b.find_element_by_tag_name("body")if el.size["height"]>sc_hight:long_sc(el,b)
else:short_sc(el,b)

除了使用标签名进行索引自己所截内容外还可使用类名、id、css等。

python实现网页长截图相关推荐

  1. 电脑qq浏览器怎么滚动截长图_Mac系统如何轻松实现网页长截图功能

    Mac 网页长截图 在日常工作生活中,我们经常需要使用到截图功能,简单的一页截图使用常用的截图工具即可,但是有时会碰到需要截图多页内容或者整个网页,使用截图工具分页截图再拼接不仅复杂而且耗时. 那么针 ...

  2. 浏览器无需下载插件 解决网页长截图的小技巧

    作为前端开发人员,可能会经常需要截取一些网页的整张图片,大家平时可能使用计算机自带截图或者QQ.微信等截图快捷键来截取某部位图,实现不了全站长截图. 当然,360浏览器可使用快捷键 Ctrl+M 来截 ...

  3. 某个网页一直不停刷新_利用浏览器做网页长截图

    在平时写文章的时候,我经常需要插入一些截图,不知你有没有注意到,在能使用手机截图的情况下,我都尽量不在 PC 上进行截取操作. 其实有如下几个理由: 基于微信平台下,大多数用户使用手机进行阅读,在电脑 ...

  4. java selenium div内嵌滚动条 网页长截图发邮件

    java selenium 网页内嵌滚动条截图发邮件 主要问题 下面展开说 由于公司要求做一个接口,请求这个接口进行网页截图并发送邮件的功能,本来前期是用python写好了,but似乎不太符合要求,那 ...

  5. Chrome浏览器 网页长截图方法

    平时我们在浏览网页的时候,碰到自己喜欢的页面,想要截图而自己的显示器窗口高度有限,我下面将为大家分享这种方式,获得整个网页的截图.一起来开始吧: 首先,我们用到的浏览器是谷歌的Chrome浏览器. 第 ...

  6. 使用Chrome浏览器实现网页长截图 无需安装插件

    有些网页比较长,一屏装不下,需要拉动滚动条才行,这种网页我们想截图截取全部内容时就比较困难 如果使用的是Chrome浏览器,可以使用如下方法截图: 打开网页后 按快捷键 F12 打开移动设备预览模式( ...

  7. python实现网页/HTML截图并转PDF

    通过Python,Node等服务端程序对现有网站或者HTML文件在不打开浏览器窗口的情况下进行截图,可以很方便的实现某些需求.如 实现办公自动化,将数据制作成<tr><td>表 ...

  8. python 打开网页并截图_python自动获得网页上的所有超链接并全部截图

    需要安装python的selenium模块,这是一个浏览器自动化的框架.然后我是使用chrome浏览器的,所以还需要安装一个chromedriver.还有一个爬虫框架bs4. selenium和bs4 ...

  9. Chrome 浏览器 原生工具进行网页长截图

    在想要截图的网页中,首先按下  Ctrl + Shift + I(或直接 F12 )快捷键,召唤出调试界面. 随后,按下 (Ctrl + Shift + P) ,输入命令 Capture full s ...

最新文章

  1. webview重新加载(reload)或者发起 redirect request导致js和objc代码之间的bridge失联解决方案(亲测有效)...
  2. VIBE复现过程,使用nvidia和libOpenGL.so渲染出错及解决方案
  3. 关于Matlab编程的思考(待续)
  4. 计算机体系结构知识笔记
  5. rust加载不进去服务器eac_基于腾讯云的 Rust 和 WebAssembly 函数即服务
  6. 居然之家完成35亿定增 小米、阿里等认购
  7. RabbitMQ之前的那些事
  8. oracle中如何模糊匹配,oracle中的截取,模糊匹配小结
  9. 加工中心三凌系统怎么用计算机,加工中心三菱系统的基本操作
  10. CSS3与CSS的区别有哪些?
  11. windows 10 Tera Term显示乱码
  12. 机电传动控制第四周作业
  13. pandas处理df函数及plt绘图函数(作业总结笔记待补充...)
  14. 2022年信息安全从业者书单推荐(2022.2.20更新)
  15. 《微信公众平台开发最佳实践》—— 1.2 微信公众账号的注册
  16. SOT-223 封装尺寸图
  17. 一个vscode自动attach进程的插件开发实例
  18. 酸辣土豆丝的做法你知道几个?
  19. 什么是ADB,ADB有什么作用?
  20. 获取树莓派4系统信息

热门文章

  1. 5.不确定性推理方法: 可信度方法, 证据理论
  2. Leveldb-C bindings for leveldb
  3. 基于光学投影图像识别的硬币分拣装置 比赛总结
  4. [译]C++17,标准库新引入的并行算法
  5. 小程序调银联支付接口
  6. Unity切图命名参考
  7. 软件汉化:关于.net软件汉化流程说明
  8. python项目实战——银行取款机系统(六)
  9. 服务器永久免费文件夹加密,云服务器文件夹加密
  10. 用7za解压文件失败的原因分析