Python实现批量将word转html并将html内容发布至网站的方法


Posted in Python onJuly 14, 2015

本文实例讲述了Python实现批量将word转html并将html内容发布至网站的方法。分享给大家供大家参考。具体实现方法如下:

#coding=utf-8
__author__ = 'zhm'
from win32com import client as wc
import os
import time
import random
import MySQLdb
import re
def wordsToHtml(dir):
#批量把文件夹的word文档转换成html文件
 #金山WPS调用,抢先版的用KWPS,正式版WPS
 word = wc.Dispatch('KWPS.Application')
 for path, subdirs, files in os.walk(dir):
  for wordFile in files:
   wordFullName = os.path.join(path, wordFile)
   #print "word:" + wordFullName
   doc = word.Documents.Open(wordFullName)
   wordFile2 = unicode(wordFile, "gbk")
   dotIndex = wordFile2.rfind(".")
   if(dotIndex == -1):
    print '********************ERROR: 未取得后缀名!'
   fileSuffix = wordFile2[(dotIndex + 1) : ]
   if(fileSuffix == "doc" or fileSuffix == "docx"):
    fileName = wordFile2[ : dotIndex]
    htmlName = fileName + ".html"
    htmlFullName = os.path.join(unicode(path, "gbk"), htmlName)
    # htmlFullName = unicode(path, "gbk") + "\\" + htmlName
    print u'生成了html文件:' + htmlFullName
    doc.SaveAs(htmlFullName, 8)
    doc.Close()
 word.Quit()
 print ""
 print "Finished!"
def html_add_to_db(dir):
#将转换成功的html文件批量插入数据库中。
 conn = MySQLdb.connect(
  host='localhost',
  port=3306,
  user='root',
  passwd='root',
  db='test',
  charset='utf8'
  )
 cur = conn.cursor()
 for path, subdirs, files in os.walk(dir):
  for htmlFile in files:
   htmlFullName = os.path.join(path, htmlFile)
   title = os.path.splitext(htmlFile)[0]
   targetDir = 'D:/files/htmls/'
   #D:/files为web服务器配置的静态目录
   sconds = time.time()
   msconds = sconds * 1000
   targetFile = os.path.join(targetDir, str(int(msconds))+str(random.randint(100, 10000)) +'.html')
   htmlFile2 = unicode(htmlFile, "gbk")
   dotIndex = htmlFile2.rfind(".")
   if(dotIndex == -1):
    print '********************ERROR: 未取得后缀名!'
   fileSuffix = htmlFile2[(dotIndex + 1) : ]
   if(fileSuffix == "htm" or fileSuffix == "html"):
    if not os.path.exists(targetDir):
     os.makedirs(targetDir)
    htmlFullName = os.path.join(unicode(path, "gbk"), htmlFullName)
    htFile = open(htmlFullName,'rb')
    #获取网页内容
    htmStrCotent = htFile.read()
    #找出里面的图片
    img=re.compile(r"""<img\s.*?\s?src\s*=\s*['|"]?([^\s'"]+).*?>""",re.I)
    m = img.findall(htmStrCotent)
    for tagContent in m:
     imgSrc = unicode(tagContent, "gbk")
     imgSrcFullName = os.path.join(path, imgSrc)
     #上传图片
     imgTarget = 'D:/files/images/whzx/'
     img_sconds = time.time()
     img_msconds = sconds * 1000
     targetImgFile = os.path.join(imgTarget, str(int(img_msconds))+str(random.randint(100, 10000)) +'.png')
     if not os.path.exists(imgTarget):
      os.makedirs(imgTarget)
     if not os.path.exists(targetImgFile) or(os.path.exists(targetImgFile) and (os.path.getsize(targetImgFile) != os.path.getsize(imgSrcFullName))):
      tmpImgFile = open(imgSrcFullName,'rb')
      tmpWriteImgFile = open(targetImgFile, "wb")
      tmpWriteImgFile.write(tmpImgFile.read())
      tmpImgFile.close()
      tmpWriteImgFile.close()
      htmStrCotent=htmStrCotent.replace(tagContent,targetImgFile.split(":")[1])
    if not os.path.exists(targetFile) or(os.path.exists(targetFile) and (os.path.getsize(targetFile) != os.path.getsize(htmlFullName))):
     #用iframe包装转换好的html文件。
     iframeHtml='''
     <script type="text/javascript" language="javascript">
      function iFrameHeight() {
       var ifm= document.getElementById("iframepage");
       var subWeb = document.frames ? document.frames["iframepage"].document:ifm.contentDocument;
       if(ifm != null && subWeb != null) {
        ifm.height = subWeb.body.scrollHeight;
       }
      }
     </script>
     <iframe src='''+targetFile.split(':')[1]+'''
      marginheight="0" marginwidth="0" frameborder="0" scrolling="no" width="765" height=100% id="iframepage" name="iframepage" onLoad="iFrameHeight()" ></iframe>
     '''
     tmpTargetFile = open(targetFile, "wb")
     tmpTargetFile.write(htmStrCotent)
     tmpTargetFile.close()
     htFile.close()
     try:
      # 执行
      sql = "insert into common_article(title,content) values(%s,%s)"
      param = (unicode(title, "gbk"),iframeHtml)
      cur.execute(sql,param)
     except:
      print "Error: unable to insert data"
 cur.close()
 conn.commit()
 # 关闭数据库连接
 conn.close()
if __name__ == '__main__':
 wordsToHtml('d:/word')
 html_add_to_db('d:/word')

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

Python 相关文章推荐
Python列表推导式的使用方法
Nov 21 Python
详解Python实现按任意键继续/退出的功能
Aug 19 Python
python 读取txt,json和hdf5文件的实例
Jun 05 Python
python删除文件夹下相同文件和无法打开的图片
Jul 16 Python
Python代码使用 Pyftpdlib实现FTP服务器功能
Jul 22 Python
python动态视频下载器的实现方法
Sep 16 Python
python单例模式原理与创建方法实例分析
Oct 26 Python
python3格式化字符串 f-string的高级用法(推荐)
Mar 04 Python
Python运行异常管理解决方案
Mar 09 Python
浅谈python3打包与拆包在函数的应用详解
May 02 Python
浅谈python opencv对图像颜色通道进行加减操作溢出
Jun 03 Python
Python如何截图保存的三种方法(小结)
Sep 01 Python
Python删除windows垃圾文件的方法
Jul 14 #Python
Python简单计算文件夹大小的方法
Jul 14 #Python
Python判断直线和矩形是否相交的方法
Jul 14 #Python
Python下Fabric的简单部署方法
Jul 14 #Python
python简单获取数组元素个数的方法
Jul 13 #Python
python连接字符串的方法小结
Jul 13 #Python
简单上手Python中装饰器的使用
Jul 12 #Python
You might like
smarty巧妙处理iframe中内容页的代码
2012/03/07 PHP
php读取mysql中文数据出现乱码的解决方法
2013/08/16 PHP
php中常量DIRECTORY_SEPARATOR用法深入分析
2014/11/14 PHP
基于jquery中children()与find()的区别介绍
2013/04/26 Javascript
javascript实现checkBox的全选,反选与赋值
2015/03/12 Javascript
jquery实现图片随机排列的方法
2015/05/04 Javascript
javascript实现网页端解压并查看zip文件
2015/12/15 Javascript
微信小程序开发中的疑问解答汇总
2017/07/03 Javascript
H5基于iScroll实现下拉刷新和上拉加载更多
2017/07/18 Javascript
微信小程序实战篇之购物车的实现代码示例
2017/11/30 Javascript
Vue CLI3中使用compass normalize的方法
2019/05/30 Javascript
15 分钟掌握vue-next响应式原理
2019/10/13 Javascript
JS数组方法push()、pop()用法实例分析
2020/01/18 Javascript
pycharm 使用心得(九)解决No Python interpreter selected的问题
2014/06/06 Python
Python Requests 基础入门
2016/04/07 Python
利用Python+阿里云实现DDNS动态域名解析的方法
2019/04/01 Python
Python3内置模块random随机方法小结
2019/07/13 Python
python mysql断开重连的实现方法
2019/07/26 Python
docker-py 用Python调用Docker接口的方法
2019/08/30 Python
Pycharm配置autopep8实现流程解析
2020/11/28 Python
HTML5有哪些新特征
2015/12/01 HTML / CSS
HTML5触摸事件演化tap事件介绍
2016/03/25 HTML / CSS
美国鲜花递送:UrbanStems
2021/01/04 全球购物
简述安装Slackware Linux系统的过程
2012/01/12 面试题
优秀的计算机专业求职信范文
2013/12/27 职场文书
毕业生自荐书
2014/02/02 职场文书
幼儿园教师工作感言
2014/02/15 职场文书
购房意向书范本
2014/04/01 职场文书
查摆问题对照检查材料
2014/08/28 职场文书
委托代理人授权委托书范本
2014/09/24 职场文书
群众路线问题查摆对照检查材料
2014/10/04 职场文书
员工年度工作总结2015
2015/05/18 职场文书
公司会议开幕词
2016/03/03 职场文书
python使用pywinauto驱动微信客户端实现公众号爬虫
2021/05/19 Python
web前端之css水平居中代码解析
2021/05/20 HTML / CSS
Golang 结构体数据集合
2022/04/22 Golang