网页截图并自动放入word文档【python】

news/2024/11/25 23:02:38/

这里写自定义目录标题

  • 使用场景
    • 准备环境
    • 实现逻辑
      • 引入包
      • 截图模块
      • 访问mysql数据库,获取标题和网址
      • 截图并保存为word

使用场景

从mysql数据库中读取需求标题和对应网页传参,提供网页截图,将截图放入word文档中,并添加上对应标题。

准备环境

1、pycharm
2、具备mysql库
3、支持pytharm打开google浏览器(配置chromedriver.exe,可参考[https://blog.csdn.net/xmh1998/article/details/104069592])

实现逻辑

引入包

import time
import win32gui, win32ui, win32con, win32api
from selenium.webdriver.chrome.options import Options
from selenium import webdriver
import pymysql
import random
from docx import Document
from docx.shared import Inches
import shutil
import subprocess
from retrying import retrydef retry_error(exception):time.sleep(20)return isinstance(exception, NameError)# return isinstance(exception, Exception)

截图模块

@retry(retry_on_exception=retry_error, stop_max_attempt_number=3)
def window_capture(filename):hwnd = 0  # 窗口的编号,0号表示当前活跃窗口# 根据窗口句柄获取窗口的设备上下文DC(Divice Context)hwndDC = win32gui.GetWindowDC(hwnd)# 根据窗口的DC获取mfcDCmfcDC = win32ui.CreateDCFromHandle(hwndDC)# mfcDC创建可兼容的DCsaveDC = mfcDC.CreateCompatibleDC()# 创建bigmap准备保存图片saveBitMap = win32ui.CreateBitmap()# 获取监控器信息MoniterDev = win32api.EnumDisplayMonitors(None, None)w = random.randint(1100, 1300)h = random.randint(147, 151)# w = random.randint(1000, 1400)# h = random.randint(280, 290)# print(w,h)# 为bitmap开辟空间saveBitMap.CreateCompatibleBitmap(mfcDC, w, h)# 高度saveDC,将截图保存到saveBitmap中saveDC.SelectObject(saveBitMap)# 截取从左上角(0,0)长宽为(w,h)的图片saveDC.BitBlt((0, -195), (1440, 900), mfcDC, (0, 0), win32con.SRCCOPY)# saveDC.BitBlt((-30, -160), (1440, 900), mfcDC, (0, 0), win32con.SRCCOPY)saveBitMap.SaveBitmapFile(saveDC, filename)

访问mysql数据库,获取标题和网址

def mysql_conn():#链接mysqlconn = pymysql.connect(host='192.168.0.103', port=3306, user='root', passwd='xxxx', db='aaaa')cursor = conn.cursor()cursor.execute("select distinct table_name from biaotou")# conn.commit()tablename = cursor.fetchall()cursor.close()conn.close()print(tablename)listdate = []for row in tablename:listdate.append(row[0])return listdate

截图并保存为word

if __name__ == "__main__":#生成功能点列表listdate=mysql_conn()# 创建浏览器对象chrome_options = Options()# 关闭使用 ChromeDriver 打开浏览器时上部提示语 "Chrome正在受到自动软件的控制"chrome_options.add_argument("disable-infobars")# 打开docx文件document = Document('D:/xxx/aaaa.docx')#循环生成报表链接for aa in listdate:url = str(aa)print(url)#调用浏览器服务driver = webdriver.Chrome()#窗口最大化driver.maximize_window()#打开地址driver.get(url)#因数据显示慢,随眠1秒time.sleep(1)#截图保存window_capture("D:/xxx/"+aa+".jpg")#退出浏览器driver.quit()#创建新段落pl = document.add_paragraph()#添加标题document.add_heading(aa, level = 2)#添加正文# run1 = pl.add_run('xxxx' )# run1.font.name = '微软雅黑'# run1.element.rPr.rFonts.set(qn('w:eastAsia'), u'微软雅黑')# run1.font.size = Pt(21)# 是否加粗# run1.font.bold = True#想docx中插入图片document.add_picture("D:/xxx/"+aa+".jpg", width=Inches(6))pl = document.add_paragraph()document.save("D:/xxx/aaaa.docx")

http://www.ppmy.cn/news/741399.html

相关文章

长截图或长图片如何按页面切分后打印或插入到Word文档中

现在用手机可以非常方便地将手机的任意页面(禁止截图的App页面除外)用截长屏的方式一次性将常常的页面内容截图下来,这些长页面通常是通常是聊天记录或各种文章等。 截图下来后,在手机或电脑中查看倒是不会有什么问题。但是&…

去掉Word中文档截图的阴影

在使用Word打印拍照的文档或者截图的文档时,有时候图片中会有阴影,我们需要快速的去掉他们。 在去掉阴影之前是这样的: 去掉之后是这样的 完全看不出图片原来的阴影, 方法如下 右键单击图片,找到设置图片格式 选…

vscode相关问题处理

1. 跳转缓慢,跳转函数,一直转圈圈,比较慢 关闭vscode 删除索引文件 cd ~/.config/Code/User/workspaceStorage rm -rf * 2.重新打开vscode即可 2. 波浪线报错 在确认c_cpp_properties.json没有问题的前提下,考虑有重复的安装包&am…

基于STM32智能窗帘控制系统仿真设计(含源程序+proteus仿真+讲解视频)

# 基于STM32智能窗帘设计(含源程序proteus仿真) 仿真:proteus8.11 程序编译器:keil 5 编程语言:C语言 编号C0007 资料下载链接 讲解视频 基于STM32的简易智能窗帘控制系统仿真设计 功能说明: 实现功能&a…

2017年精选文章集合

点击上方蓝字关注公众号 码个蛋第282次推文 让你收获满满! 码个蛋从2017年02月20日推送第1篇文章,一年过去了已累积推文近300篇文章,本文为2017年度精选,共计200篇,按照类别整理便于读者主题阅读。 本篇文章是今年的最后一篇技术文…

算法训练营 重编码_编码训练营还教您如何每天被拒绝10次。

算法训练营 重编码 by Erik Cannon 通过埃里克坎农 编码训练营还教您如何每天被拒绝10次。 (Coding bootcamps also teach you how to get rejected 10 times a day.) “You will have 60 minutes to complete the four coding challenges and have all of the tests pass to …

游戏编程

游戏编程指南 A Guide to Game Programming v1.10alpha 最后更新于2003.1.14 本文基于VC7.0 / DirectX 9.0 / Winsock 2.2 推荐使用Word 2000及以上版本阅读 大家看完之后如果有什么意见和建议请务必在留言簿提出,谢谢!!! 如果你认为任何地方写错了,请告诉我… 如果你…

9月13号魔兽服务器维护,9月13日版本更新维护

斗玩网(d.chinaz.com)报道:LOL英雄联盟9 月 13 日版本更新维护公告,英雄联盟 9 月 13 日更新什么时候结束。LOL将在 9 月 13 日 1 点关闭排位赛入口(不影响已经在进行中的对局),凌晨 2 点全区停机维护,更新8. 18 新版本&#xff0…