Python实现识别html文本内容并截图放入word文档

1 篇文章 0 订阅
1 篇文章 0 订阅

需求:

excel文件中存放了很多html标签文本,需要把文本内容在浏览器中打开将内容截图,放入doc文档保存。

手动过程

需要逐条手动处理

1. 从excel表格中复制标签文本内容

<div>二项竞争性比选结果公示<br>南昌通信段<a>南昌通信段委外工程</a>2022-06-28 15:02发表于江西<br><p> 根据南昌通信段2022年6月27日关于 “莆田车间基站房屋漏水整治” 项目比选结果的审批意见,现将结果予以公布。具体如下:<br>中选单位:福建志海建设有限公司</p><p>中选情况:承诺在实际验收决算的基础上降造 12% 结算费用。<br> 如对本结果有异议的,可自本公示发布之日起三日内提出。<br> 梅旭宝 联系方式:0791-87025476<br> 曾国萍(纪检监察) 联系方式:0791-87027016</p><p><br></p><p> 根据南昌通信段2022年6月15日关于 “吉衡线K72迁改” 项目比选结果的审批意见,现将结果予以公布。具体如下:<br>中选单位:南昌精通实业有限公司</p><p>中选情况:承诺在实际验收决算的基础上降造 12.5% 结算费用。<br> 如对本结果有异议的,可自本公示发布之日起三日内提出。<br> 梅旭宝 联系方式:0791-87025476<br> 曾国萍(纪检监察) 联系方式:0791-87027016</p><p><br></p><p><br></p><p><br></p><p> 南昌通信段 </p><p> 2022 年 6 月 28 日</p></div>

2.将标签文本内容放入html文件在浏览器中打开:

 3.截图放入word文档。

脚本实现

由于数据很多,且步骤重复,可以通过python脚本实现这一过程自动化。

本人没有系统的学习过python,对很多语法规范都不了解,写的一些脚本都是根据功能点在网上查的代码,然后组合成自己需要的功能,所以代码写得比较凌乱,见谅。

用到的三方包及工具:

selenium、xlrd、python-docx

webdriver地址http://chromedriver.storage.googleapis.com/index.html

谷歌浏览器地址谷歌浏览器Chrome最新版下载地址汇总 - 知乎

步骤拆分:

1.按行读取excel文件内容

2.将内容写入html文件

3.通过chrome驱动实现在浏览器打开html文件并滚动截图并将图片保存到本地

4.读入的excel内容按字段写入word文档中。

代码:

from selenium import webdriver
import time

#导出word
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT #设置对象居中、对齐等。
from docx.enum.text import WD_TAB_ALIGNMENT,WD_TAB_LEADER #设置制表符等
from docx.shared import Inches #设置图像大小
from docx.shared import Pt #设置像素、缩进等
from docx.shared import RGBColor #设置字体颜色
from docx.shared import Length #设置宽度
from docx.oxml.ns import qn
from docx import Document

import xlrd
#临时图片路径
img_path =  f'C:\\Users\\Administrator\\Desktop\\jietu\\1.png'
#临时html文件路径
html_path = f'C:\\Users\\Administrator\\Desktop\\jietu\\temp.html'
document=Document()

#截图
def screencut():
    options = webdriver.ChromeOptions()
    options.add_argument('--disable-gpu')  # 禁用gpu
    options.add_argument('--ignore-certificate-errors') #忽略一些莫名的问题
    options.add_experimental_option('excludeSwitches', ['enable-automation'])  # 开启开发者模式
    options.add_argument('--disable-blink-features=AutomationControlled')  # 谷歌88版以上防止被检测
    options.add_argument('--headless')  # 无界面
    driver = webdriver.Chrome(options=options)  # 将chromedriver放到Python安装目录Scripts文件夹下
    #临时html文件路径
    url = f"file:///C:/Users/Administrator/Desktop/jietu/temp.html"
    driver.get(url)
    time.sleep(1)
    js_height = "return document.body.clientHeight"
    k = 1
    height = driver.execute_script(js_height)
    while True:
        if k * 500 < height:
            js_move = "window.scrollTo(0,{})".format(k * 500)
            driver.execute_script(js_move)
            time.sleep(0.2)
            height = driver.execute_script(js_height)
            k += 1
        else:
            break
    # 注:必须开启无界面模式,即:--headless
    # 接下来是全屏的关键,用js获取页面的宽高,如果有其他需要用js的部分也可以用这个方法
    width = driver.execute_script("return document.body.scrollWidth")
    height = driver.execute_script("return document.body.scrollHeight")
    # 将浏览器的宽高设置成刚刚获取的宽高
    driver.set_window_size(width, height)
    time.sleep(1)
    # 截图并关掉浏览器
    driver.save_screenshot(img_path)
    time.sleep(0.5)
    driver.close()
 
#创建word文档   
def createDoc(prjName,oriId,keywod,date,detail):

    #初始化标题

    run = document.add_heading("").add_run(prjName)
    run.font.name = u'宋体'
    # 设置中文字体
    run._element.rPr.rFonts.set(qn('w:eastAsia'), u'微软雅黑')
    # 设置字体颜色
    #run.font.color.rgb = RGBColor(255, 255, 255)

    p2 = document.add_paragraph()
    run2 = p2.add_run(oriId)

    
    p3 = document.add_paragraph()
    run3 = p3.add_run('关键字:'+keywod)
     
    p4 = document.add_paragraph()
    run4 = p4.add_run('日期:'+date)
               
    document.add_picture(img_path,width=Pt(500))
    
def readExcel():
    #读文件
    book = xlrd.open_workbook(r'C:\Users\Administrator\Desktop\jietu\zhaobiao.xls')
    sheet = book.sheets()[0]
    for rown in range(sheet.nrows):
       if rown == 0:
           continue
       oriId = sheet.cell_value(rown,0)
       prjName = sheet.cell_value(rown,2)
       keywod = sheet.cell_value(rown,3)
       date = sheet.cell_value(rown,5)
       detail = sheet.cell_value(rown,6)
        #写文件
       with open(html_path,'w') as f:
           f.write(detail)
       f.close()
       #打开并截图
       screencut() 
       #保存到文档中
       createDoc(prjName,oriId,keywod,date,detail)

#####################调用方法开始########################
#读取excel文件       
readExcel()
#保存
document.save('C:\\Users\\Administrator\\Desktop\\jietu\\招标信息.docx')

效果如下:

Python实现识别html文本内容并截图放入word文档

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

朝涯浅浅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值