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. 基于java的InputStream.read(byte[] b,int off,int len)算法学习!
  2. 记录一次java.lang.OutOfMemoryError: PermGen space异常
  3. 计算机xp怎么做备份,怎样备份xp系统电脑上的所有数据?在xp系统中备份所有文件的方法...
  4. MySQL日期及时间加减函数
  5. 巨人的魔法——腾讯打造会思考的数据中心
  6. Uuntu16.04重装后u盘不识别问题解决
  7. pandas读取csv某一列_让pandas处理大数据速度变快的三个技巧
  8. TensorFlow2.0:常用数据范围压缩函数
  9. 吴颖二:12.27 什么是现货,如何操作才能盈利
  10. brew update:以下未跟踪的工作树文件将被合并覆盖:
  11. redis 慢消费_Redis精进:List的使用和应用场景
  12. .Net环境下有关打印页面设置、打印机设置、打印预览对
  13. Android SIP软电话,通话录音,VoIP电话,linphone电话
  14. 测试驱动开发(TDD)开发思路
  15. mysql数据库去重
  16. 有关sim800l的资料
  17. vscode 设置关键字高亮显示
  18. 【图像分类】YOLOv5-6.2全新版本:支持图像分类
  19. Oracle——武汉空间数据库系统设计
  20. Hadoop中怎么解决Starting secondary namenodes [0.0.0.0]

热门文章

  1. 如何使用视频转换器将ogg格式转换为MP3格式 1
  2. 安卓测试工具:Appium 环境安装(mac版本)
  3. ajax 泛微oa表单js_泛微oa流程表单二次开发新人注意事项,
  4. 2018年8月27 w3school html
  5. EBS 修改系统名称
  6. 现代办公室信号干扰解决方案
  7. 研发人员绩效考核案例
  8. osg demo9 draw a quad
  9. arduino esp8266web esp32web
  10. sku排列算法实现商品规格属性组合