小菜鸟的Python笔记002:如何识别Word文档中的复选框
如何识别Word文档中的复选框
- 前言
- 一、程序思路及准备工作
- 程序思路:
- 准备工作:
- 二、使用步骤
- 1.引入库
- 2.将Word文档转为html并读入
- 3.用Xpath提取所需数据
- 三、遇到的问题
- 总结
前言
我在做将Word文档中数据汇总到Excel表格(小菜鸟的Python笔记001:将Word文档中数据汇总到Excel表格)的过程中遇到了一个问题,直接提取文档中的复选控件,是无法识别它有没有被选中。在网上找了好久都没有找到相应的解决方法,我苦思冥想了好久,终于想到了一个比较曲折的方法,如果有更好的方法,欢迎来和我交流!
一、程序思路及准备工作
程序思路:
我想,我用win32com库调用Word打开后直接提取无法识别,那Word是如何识别到它,然后把它显示出来的呢?后来我想到了,如果把它转为html,那浏览器是否能够识别呢?我试了一下,用浏览器打开它,能够正常显示,我再打开调试模式,找到复选框对应的标签,发现在html中已打勾的复选框表示的符号为"þ"或者"R",未选中的为”o“或者”··“。故我想到了以下方法:
1、将Word文档转为html格式
2、读入html文件
3、用Xpath提取对应标签信息
4、判断是否打勾
准备工作:
这里用到了lxml这个库中的etree函数,它可将html转为xpath可识别的xml
二、使用步骤
1.引入库
from lxml import etree
2.将Word文档转为html并读入
html_path="D:\T5.html"
doc.SaveAs(html_path,8) #另存为html,8代表html
doc.Close()
f = codecs.open(html_path, "r", "gbk") #读取html
content = f.read()
f.close()
tree = etree.HTML(content)
3.用Xpath提取所需数据
found=tree.xpath("/html/body/div/div/table/tr[18]/td[4]/p[1]/span[2]/text()")[0] #用xpath提取数据,xpath路径可在浏览器调试模式中复制
notfound=tree.xpath("/html/body/div/div/table/tr[18]/td[4]/p[2]/span[2]/text()")[0]if ((found=="þ")or(found=="R"))&(found!=notfound): #判断whether_found="已开发"
elif ((notfound=="þ")or(notfound=="R"))&(found!=notfound):whether_found="未开发"
else:whether_found ="出错"
三、遇到的问题
在用xpath提取数据的时候,我用浏览器复制下来的xpath路径,死活都提取不出来,试了好多次提取出来的都是一个空列表,后来在网上找了一下,原来是因为浏览器有时会为了显示加上一些标签,在用xpath提取的时候就失败了。如我上述的xpath路径为"/html/body/div/div/table/tr[18]/td[4]/p[1]/span[2]/text()",但是从浏览器复制出来的是"/html/body/div/div/tbody/table/tr[18]/td[4]/p[1]/span[2]/text()"。当时死活都没想到是这个原因,所以如果你也遇到这样的问题,不妨先检查一下xpath路径是否正确。
总结
上述方法我觉得十分的曲折,而且程序运行地比较慢,但是我也只能想到这个方法了,如果你有更好地方法,欢迎来跟我交流!
第一次写技术分享文章,较为粗略,有问题可以私信和我交流!
小菜鸟的Python笔记002:如何识别Word文档中的复选框相关推荐
- 小菜鸟的Python笔记001:将Word文档中数据汇总到Excel表格
将Word文档中数据汇总到Excel表格 前言 一.应用场景 二.程序思路及准备工作 思路如下: 准备工作: 三.程序代码 1.主程序 2.获取Word文档列表 3.提取文档内数据 4.导入到Exce ...
- 【Python】导出docx格式Word文档中的文本、图片和附件等
[Python]导出docx格式Word文档中的文本.图片和附件等 零.需求 为批量批改学生在机房提交的实验报告,我需要对所有的实验文档内容进行处理.需要批量提取Word文档中的图片和附件以便进一步检 ...
- Python批量提取docx格式Word文档中所有批注
封面图片:<Python程序设计基础与应用>(ISBN:9787111606178),董付国,机械工业出版社 图书详情: 用书教师可以联系董老师获取教学大纲.课件.源码.教案.考试系统等配 ...
- Python批量提取docx格式Word文档中所有文本框内的文本
功能描述: 批量提取指定Word文档(docx格式)中所有文本框中的文本. 测试文件: 参考代码: 执行结果:
- python环绕文字_Java 设置 Word 文档中图片文字环绕方式
Java 设置 Word 文档中图片文字环绕方式 在Word文档中插入图片时,选择合理的图片文字环绕方式可以使图片的展示效果更好,也能使页面的排版更加美观.本文就将介绍如何使用Free Spire.D ...
- Python 使用docx库操作word文档中的表格单元格内容
1.导入库 from docx import Document 2.加载word文档对象 doc = Document(path) 3.定位表格 # 获取所有表格对象 tables = doc.tab ...
- Word处理控件Aspose.Words功能演示:使用 Python 查找和替换 Word 文档中的文本
很多时候,您需要替换 Word 文档中的特定文本或短语.MS Word 具有针对此类情况的内置功能,您可以一键替换所需的文本.在本文中,您将学习如何使用 Python 以编程方式查找和替换 Word ...
- 办公室小姐姐的福利!用Python批量提取word文档中的表格和图片内容
点上方"菜鸟学Python",选择"星标" 第491篇原创干货,第一时间送达 最近有许多小伙伴想要一些自动化办公的福利小程序,今天就满足大家的需求.日常的办公过 ...
- Python提取word文档中的图片,识别图片文字之后再转存为word文档
#!/usr/bin/env python # coding: utf-8 import zipfile #压缩包 import os #文件库 import shutil import pytess ...
- Python 读取 PDF 信息插入 Word 文档
Python 读取 PDF 信息插入 Word 文档 思路 PDFMiner模块 docx-mailmerge 模块 回顾 代码下载 Hello,上个周末没能搞事情,被一个代码需求给绊住了:朋友在平时 ...
最新文章
- Moore状态机和Mealy状态机的区别
- [Swift]LeetCode206. 反转链表 | Reverse Linked List
- python入门到精通自学_python入门到精通大型视频、自学者的福利
- CF1088F. Ehab and a weird weight formula(倍增)
- MySQL建表添加乐观锁字段_Java秒杀系统优化-Redis缓存-分布式session-RabbitMQ异步下单-页面静态化...
- oracle函数 授权,如何在Oracle中以普通用户身份运行dbms_crypto函数?
- mysql1000w数据怎么加索引_给mysql一百万条数据的表添加索引
- 中国体脂分析仪行业市场供需与战略研究报告
- html5控制gif图的播放和暂停,使用JS和canvas实现gif动图的停止和播放代码
- 190301每日一句
- ValueError: numpy.ufunc size changed, may indicate binary incompatibility. Expected 216 fro m C...
- CSS动画 animation与transition
- 办公必备计算机软件,推荐8个职场办公的必备软件,每一个都能让你有所收获!...
- R语言柯西概率分布(cauchy distribution)函数(dcauchy, pcauchy, qcauchy rcauchy)实战
- ABAP 企业微信ASE 加密算法
- linux服务器配置磁盘阵列,Linux下的RAID配置和管理
- git describe 生成版本号
- 怎样再网上卖东西,让小编来教你开网店!
- 真实案例:一个渠道、一本书,狠狠赚了200万
- 【 Vue全家桶 · Vue CLI(四)】Vue项目的详细目录结构解析
热门文章
- office2013卸载工具
- edp和edt哪个好_菲拉格慕香水edp和edt的区别 选择适合自己的香水方法
- SEO搜索引擎优化是什么
- linux 中的 usr 是什么含义
- python参数类型为uint8_Python 改变数组类型为uint8的实现
- 阿里云Hologres外部表的创建及使用
- 项目:任务清单(Vuex)
- 恒生ufx接口转变成CTP接口
- mac谷歌浏览器怎么登陆账户_苹果电脑怎么安装谷歌浏览器_macbook如何下载安装谷歌浏览器-win7之家...
- C语言:实数类型。2021-02-15