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而不是Matlab和R语言
Nov 14 Python
python中将字典形式的数据循环插入Excel
Jan 16 Python
Win7 64位下python3.6.5安装配置图文教程
Oct 27 Python
浅谈Python采集网页时正则表达式匹配换行符的问题
Dec 20 Python
python实现控制台打印的方法
Jan 12 Python
查看Python依赖包及其版本号信息的方法
Aug 13 Python
PyCharm2019安装教程及其使用(图文教程)
Sep 29 Python
python多线程实现同时执行两个while循环的操作
May 02 Python
Python Flask框架实现简单加法工具过程解析
Jun 03 Python
Python pip使用超时问题解决方案
Aug 03 Python
python自动生成sql语句的脚本
Feb 24 Python
使用Python快速打开一个百万行级别的超大Excel文件的方法
Mar 02 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
PHP创建桌面快捷方式的实例代码
2014/02/17 PHP
PHP中SQL查询语句的id=%d解释(推荐)
2016/12/10 PHP
yii框架搜索分页modle写法
2016/12/19 PHP
php 使用curl模拟ip和来源进行访问的实现方法
2017/05/02 PHP
js变量作用域及可访问性的探讨
2006/11/23 Javascript
js中更短的 Array 类型转换
2011/10/30 Javascript
根据经纬度计算地球上两点之间的距离js实现代码
2013/03/05 Javascript
javascript页面加载完执行事件代码
2014/02/11 Javascript
一个简单的全屏图片上下打开显示网页效果示例
2014/07/08 Javascript
javascript处理a标签超链接默认事件的方法
2015/06/29 Javascript
Node.js环境下JavaScript实现单链表与双链表结构
2016/06/12 Javascript
Vue.js基础知识小结
2017/01/13 Javascript
DVA框架统一处理所有页面的loading状态
2017/08/25 Javascript
微信小程序 wxParse插件显示视频问题
2019/09/27 Javascript
小谈angular ng deploy的实现
2020/04/07 Javascript
jQuery 函数实例分析【函数声明、函数表达式、匿名函数等】
2020/05/19 jQuery
Vue如何跨组件传递Slot的实现
2020/12/14 Vue.js
[45:32]Liquid vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
Python中的exec、eval使用实例
2014/09/23 Python
解析Python中的异常处理
2015/04/28 Python
Python单例模式实例详解
2017/03/01 Python
详解Python安装scrapy的正确姿势
2018/06/26 Python
python pickle存储、读取大数据量列表、字典数据的方法
2019/07/07 Python
python中return不返回值的问题解析
2020/07/22 Python
Roots加拿大官网:加拿大休闲服饰品牌
2016/10/24 全球购物
澳大利亚在线家具店:Luxo Living
2019/03/24 全球购物
美国校服网上商店:French Toast
2019/10/08 全球购物
神路信息Java面试题目
2013/03/31 面试题
介绍一下常见的木马种类
2014/11/15 面试题
什么是抽象
2015/12/13 面试题
工程负责人任命书
2014/06/06 职场文书
家长会欢迎标语
2014/06/24 职场文书
卫生主题班会
2015/08/14 职场文书
2019年健身俱乐部的创业计划书
2019/08/26 职场文书
浅析Python中的套接字编程
2021/06/22 Python
通过Qt连接OpenGauss数据库的详细教程
2021/06/23 PostgreSQL