本文实例讲述了Python实现将HTML转换成doc格式文件的方法。分享给大家供大家参考,具体如下:

网页上的一些文章,因为有格式的原因,它们在网页上的源码都是带有html标签的,用css来进行描述。本文利用HTML Parser 和docx两个模块,对网页进行解析并存储到word文档中。转换出来的格式相对还是有些粗糙,不喜勿喷。话不多说,直接上代码。

class HTMLClient:

#获取html网页源码

def GetPage(self, url):

#user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'

user_agent = 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/34.0.1847.116 Chrome/34.0.1847.116 Safari/537.36'

headers = { 'User-Agent' : user_agent }

req = urllib.request.Request(url, None, headers)

try:

res = urllib.request.urlopen(req)

return res.read().decode("utf-8")

except urllib.error.HTTPError as e:

return None

#获取网络图片并保存在程序运行目录下

def GetPic(self, url):

user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'

headers = { 'User-Agent' : user_agent }

req = urllib.request.Request(url, None, headers)

try:

res = urllib.request.urlopen(req)

return res.read()

except urllib.error.HTTPError as e:

return None

html到doc的转换过程中,图片保存和处理是比较麻烦的事情,因为可能涉及到图片格式错误,因此为了保证图片正常运行,应当修改图片添加异常处理流程。

class MYHTMLParser(HTMLParser):

def __init__(self, docfile):

HTMLParser.__init__(self)

self.docfile = docfile

self.doc = Document(docfile)

self.myclient = HTMLClient()

self.text = ''

self.title = False

self.isdescription = False

self.picList=[]

#根据标签头类型决定标签内容的格式

def handle_starttag(self, tag, attrs):

#print "Encountered the beginning of a %s tag" % tag

self.title = False

self.isdescription = False

#

标签说明其中的内容是标题

if re.match(r'h(\d)', tag):

self.title = True

#图片的处理比较复杂,首先需要找到对应的图片的url,然后下载并写入doc中

#下载的图片格式如果有问题,docx模块会报错,因此重新定义异常处理

#图片名称需要记录下来,在文档保存后要自动删除

if tag == "img":

if len(attrs) == 0: pass

else:

for (variable, value) in attrs:

if variable == "src":

#此处图片url类型为[http://url/pic.img!200*200]

#不同网站图片类型不同,因此当作不同处理

picdata = self.myclient.GetPic(value.split('!')[0])

if picdata == None:

pass

else:

pictmp = value.split('/')[-1].split('!')[0]

picfix = value.split('/')[-1].split('!')[-1]

with open(pictmp, 'wb') as pic:

pic.write(bytes(picdata))

pic.close()

try:

if picfix[0:1] == 'c':

self.doc.add_picture(pictmp, width=Inches(4.5))

else:

self.doc.add_picture(pictmp)#, width=Inches(2.25))

except docx.image.exceptions.UnexpectedEndOfFileError as e:

print(e)

self.picList.append(pictmp)

#javascript脚本

if tag == 'script':

self.isdescription = True

def handle_data(self, data):

if self.title == True:

if self.text != '':

self.doc.add_paragraph(self.text)

self.text = ''

self.doc.add_heading(data, level=2)

if self.isdescription == False:

self.text += data

def handle_endtag(self, tag):

#if tag == 'br' or tag == 'p' or tag == 'div':

if self.text != '':

self.doc.add_paragraph(self.text)

self.text = ''

def complete(self, html):

self.feed(html)

self.doc.save(self.docfile)

for item in self.picList:

if os.path.exists(item):

os.remove(item)

希望本文所述对大家Python程序设计有所帮助。

python html转word文档_Python实现将HTML转换成doc格式文件的方法示例相关推荐

  1. python将源代码转换成在html可显示的格式,Python实现将HTML转换成doc格式文件的方法示例...

    Python实现将HTML转换成doc格式文件的方法示例 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  Python实现将HTML转换成doc格式文件的方法示例. ...

  2. python修改文件格式为jpg_python将.ppm格式图片转换成.jpg格式文件的方法

    python将.ppm格式图片转换成.jpg格式文件的方法 将.ppm格式的图片转换成.jpg格式的图像,除了通过软件转换,还可以使用python脚本直接转换,so easy!!! from PIL ...

  3. python 自动生成word文档_python实现的生成word文档功能示例

    本文实例讲述了python实现的生成word文档功能.分享给大家供大家参考,具体如下: 每月1次的测试费用报销,需要做一个文档.干脆花点时间写个程序吧. # -*- coding: utf-8 -*- ...

  4. python批量提取word指定内容_使用python批量读取word文档并整理关键信息到excel表格的实例...

    目标 最近实验室里成立了一个计算机兴趣小组 倡议大家多把自己解决问题的经验记录并分享 就像在CSDN写博客一样 虽然刚刚起步 但考虑到后面此类经验记录的资料会越来越多 所以一开始就要做好模板设计(如下 ...

  5. 办公室小姐姐的福利!用Python批量提取word文档中的表格和图片内容

    点上方"菜鸟学Python",选择"星标" 第491篇原创干货,第一时间送达 最近有许多小伙伴想要一些自动化办公的福利小程序,今天就满足大家的需求.日常的办公过 ...

  6. python新建word文档_使用Python 自动生成 Word 文档的教程

    当然要用第三方库啦 :) 使用以下命令安装: pip install python-docx 使用该库的基本步骤为: 1.建立一个文档对象(可自动使用默认模板建立,也可以使用已有文件). 2.设置文档 ...

  7. python自动生成和读取word_使用Python自动生成Word文档的教程

    当然要用第三方库啦 :) 使用以下命令安装: pip install python-docx 使用该库的基本步骤为: 1.建立一个文档对象(可自动使用默认模板建立,也可以使用已有文件). 2.设置文档 ...

  8. python实现生成word文档并转为pdf

    python实现生成word文档,格式转为pdf 使用的是python-docx模块,在生成word文档后转为pdf格式是使用的是docx2pdf中的convert(使用convert转换时,要先创建 ...

  9. Python动态修改Word文档内容,保留格式样式,并批量生成PDF

    Python动态修改Word文档内容,保留格式样式,并批量生成PDF 前言 一.需要安装的库 二.核心逻辑-替换 前言 假如你有一个Word模版文档,要在里面填写人员信息,但人员有成百上千个,手动填起 ...

最新文章

  1. Unity插件之NGUI学习(8)—— Table和NGUI尺寸转换为世界坐标系尺寸
  2. 如何识别真正的程序员
  3. android动态获取输入值,Android实现动态自动匹配输入内容
  4. bootstrapt 表格自适应_一起聊B端设计 - 如何设计表格?
  5. LeetCode:验证回文串【125】
  6. hbase put 写入数据慢_HBase运维 | HBase 疑难杂症诊治
  7. 服务器显示RL011,台达伺服驱动器维修之AL011故障原因和方法
  8. 【接口时序】8、DDR3驱动原理与FPGA实现(一、DDR的基本原理)
  9. 如何删除电脑里的android驱动程序,驱动安装失败 如何手动清除旧驱动程序
  10. Macbook pro 2015 13寸丐版更换512G固态流程记录
  11. 163的邮箱怎么注册?163的邮箱格式怎么填写?
  12. Java笔记 - 黑马程序员_07(多线程,线程同步,线程池,网络编程入门,UDP通信原理,TCP通信原理,commons-io工具类)
  13. AI上推荐 之 NeuralCF与PNN模型(改变特征交叉方式)
  14. 又java基础学php多久_php自学需要多久?
  15. 【财经期刊FM-Radio|2021年03月01日】
  16. 玩转NVIDIA Jetson AGX Xavier--- 中文用户手册
  17. 汇编程序语言 输入数字n和n个数字并对n个数字排序(带注释)
  18. 家里WiFi慢?几招帮你解决
  19. Livy 安装使用说明
  20. Google的霸道:我就是要独享安卓源代码!

热门文章

  1. 简述Spring技术内幕
  2. 《Ext JS权威指南》——1.2节JSON概述
  3. HDU2476:String painter(区间dp)
  4. Java面向对象练习题之学生信息
  5. 后缀数组 --- HDU 3518 Boring counting
  6. Ninject学习笔记三
  7. W3C中meta标签详解
  8. 设计模式之:深入浅出 java 单例模式(Singleton)
  9. page对保护的作用
  10. ZZULIOJ 1101: 逆序数字(函数专题)