2007文书档案转变为pdf文件,COM落成Word文书档案的写入与封存方法

【查看源文书档案】Python接口文书档案

在付出进度中,会碰着在命令行下将DOC文书档案(可能是别的Office文书档案)调换为PDF的要求。比如在类型中一经手册是DOC格式的,在项目揭穿时希望将其更动为PDF格式,并且保留DOC中的书签,链接等。将该进度整合到营造进度中就要求命令行下实行转变。

因此win32
COM接口完毕软件的操作本质上来看跟直接操作软件一样,那跟自个儿事先平日用的通过各个扩展的零部件可能库达成各类文件的拍卖有较大的距离。假诺有过Windows下利用Word的经验,那么使用win32
COM应该算得更为便利的一种情势。

HTML文档是网络上的最首要文书档案类型,但还留存如TXT、WOLX570D、Excel、PDF、csv等种种类型的文书档案。互联网爬虫不仅要求能够抓取HTML中的敏感音讯,也亟需有抓取别的体系文书档案的工夫。上边简要记录1些私有已知的根据python3的抓取方法,以备查阅。

一、介绍

人生苦短,用最实惠的办法:<查看Python接口文书档案>

本篇作品针对性人群:python开荒、python爱好者
本篇文章的目标:查看python的接口
QQ交流群:585499566

迈克尔Suodenjoki展示了采取Office的COM接口实行指令行下的转移。但其导出的PDF文书档案没有书签。在Office
2007SP第22中学,微软插手了该效率,对应的接口是ExportAsFixedFormat。该办法不但适用于Word,而且也适用于Excel。

在此此前通过拼凑网络上的代码完结过Word文书档案的处理,后天透过读文书档案从头开头做贰回新的尝尝。简单达成1个Word文件的创设、写入与储存。

1.抓取TXT文档

2、使用办法

澳门葡京备用网址 ,python自带的接口文书档案展示效果,查看最理想的接口也等于源接口,不要再浪费时间在百度了,扶助急忙化解实用python模块,定位bug作用
命令:python -m pydoc -p 4567
4567是端口号,运维后,展开:localhost:4567就能够望见python接口文书档案了

澳门葡京备用网址 1

 

三个简约的Python脚本来突显什么退换DOC为PDF。该脚本需求Office 200柒 SP二,
Python 2.陆与Python for
win3二(使Python能调用COM)。那里也足以利用任何扶助COM的言语。ExportAsFixedFormat还有任何部分参数,具体参见MSDN相关文书档案。须求留意的是文书档案路线须求为绝对路线,因为Word运行后当前路径不是调用脚本时的日前路径。

落实的代码如下:

在python三下,常用方法是应用urllib.request.urlopen方法直接拿走。之后选拔正则表明式等艺术开始展览敏感词检索。

#-*- coding:utf-8 -*- 

# doc2pdf.py: python script to convert doc to pdf with bookmarks! 
# Requires Office 2007 SP2 
# Requires python for win32 extension 


import sys, os 
from win32com.client import Dispatch, constants, gencache 

def doc2pdf(input, output): 
 w = Dispatch("Word.Application") 

 try: 
  doc = w.Documents.Open(input, ReadOnly = 1) 
  doc.ExportAsFixedFormat(output, constants.wdExportFormatPDF,  
   Item = constants.wdExportDocumentWithMarkup, CreateBookmarks = constants.wdExportCreateHeadingBookmarks) 
  return 0 
 except: 
  return 1 
 finally: 
  w.Quit(constants.wdDoNotSaveChanges) 

# Generate all the support we can. 
def GenerateSupport(): 
 # enable python COM support for Word 2007 
 # this is generated by: makepy.py -i "Microsoft Word 12.0 Object Library" 
 gencache.EnsureModule('{00020905-0000-0000-C000-000000000046}', 0, 8, 4) 

def main(): 
 if (len(sys.argv) == 2): 
  input = sys.argv[1] 
  output = os.path.splitext(input)[0]+'.pdf' 
 elif (len(sys.argv) == 3): 
  input = sys.argv[1] 
  output = sys.argv[2] 
 else: 
  input = u'BA06007013.docx'#word文档的名称 
  output = u'BA06007013.pdf'#pdf文档的名称 
 if (not os.path.isabs(input)): 
  input = os.path.abspath(input) 
 if (not os.path.isabs(output)): 
  output = os.path.abspath(output) 
 try: 
  GenerateSupport() 
  rc = doc2pdf(input, output) 
  return rc 
 except: 
  return -1 

if __name__=='__main__': 
  rc = main() 
  if rc: 
    sys.exit(rc) 
  sys.exit(0) 
#!/usr/bin/python

import os
from win32com.client import Dispatch
pwd = os.getcwd()

wordApp = Dispatch('word.Application')
wordApp.Visible = True
myDoc = wordApp.Documents.Add()
myRange = myDoc.Range(0,0)
myRange.InsertBefore('hello python word doc!')
myDoc.SaveAs(pwd + '\\python_word_demo.docx')
myDoc.Close()
wordApp.Quit()
### Reading TXT doc ###
from urllib.request import urlopen
from urllib.error import URLError,HTTPError
import re

try:
 textPage = urlopen("http://www.pythonscraping.com/pages/warandpeace/chapter1.txt")
except (URLError,HTTPError) as e:
 print("Errors:\n")
 print(e)
#print(textPage.read())
text = str(textPage.read())

#下面方法用正则匹配含1805的句子
pattern = re.compile("\..*1805(\w|,|\s|-)*(\.)")#不完美,简单示例
match = pattern.search(text)
if match is not None:
 print(match.group())

#下面方法不用正则。先用.将句集分片,之后就可遍历了。
ss = text.split('.')
key_words = "1805"
words_list = [x.lower() for x in key_words.split()]
for item in ss:
 if all([word in item.lower() and True or False for word in words_list]):
  print(item)

上述便是本文的全体内容,希望对大家的就学抱有帮衬,也可望大家多多帮忙脚本之家。

2007文书档案转变为pdf文件,COM落成Word文书档案的写入与封存方法。程序运维没错误报出,运转的进程中会看到Word软件的展开以及操作最后关闭的经过。实行完结后,当前文件夹中多了多个名称叫python_word_demo.docx的公文。张开文件能够见到个中写入的内容如下:

上边包车型地铁主意是已知目的网页为txt文本时的抓取。事实上,在自行抓取网页时,必须思索对象网页是或不是为纯文本,用何种编码等主题素材。

您恐怕感兴趣的小说:

  • python批量完成Word文件调换为PDF文件
  • 行使python程序生成word和PDF文书档案的章程
  • 选择python将pdf输出为txt的实例讲授
  • Python实现pdf文书档案转txt的法子言传身教
  • python达成pdf转换来word/txt纯文本文件

澳门葡京备用网址 2

假设只是编码难点,能够总结利用print(textPage.read(),’utf-八’)等python字符处理格局来化解,假若抓取的是某些HTML,最棒先分析,例如:

这么,先前想演示的成效便一度完毕,达成的秘诀比本身想象中的轻易不少。假若有文件的批量甩卖要求,那如实又是三个得以思虑的好格局。

from urllib.request import urlopen
from urllib.error import URLError,HTTPError
from bs4 import BeautifulSoup
try:
 html = urlopen("https://en.wikipedia.org/wiki/Python_(programming_language)")
except (URLError,HTTPError) as e:
 print(e)
try:
 bsObj = BeautifulSoup(html,"html.parser")
 content = bsObj.find("div",{"id":"mw-content-text"}).get_text()
except AttributeError as e:
 print(e)

meta = bsObj.find("meta")
#print(bsObj)
if meta.attrs['charset'] == 'UTF-8':
 content = bytes(content,"UTF-8")
 print("-----------------UTF-8--------------")
 print(content.decode("UTF-8"))
if meta.attrs['charset'] == 'iso-8859-1':
 content = bytes(content,"iso-8859-1")
 print("--------------iso-8859-1------------")
 print(content.decode("iso-8859-1"))

如上那篇使用Python通过win32
COM实现Word文书档案的写入与保留方法正是作者分享给大家的全体内容了,希望能给大家2个参照,也意在我们多多支持脚本之家。

2.抓取CSV文档

你恐怕感兴趣的篇章:

  • Python使用win3二com模块落成多少库表结构自动生成word表格的点子
  • Python读取钦定目录下钦定后缀文件并保存为docx
  • Python读写docx文件的法子
  • python docx
    汉语字体设置的操作方法
  • Python读取Word(.docx)正文消息的诀窍
  • python3如何将docx转换成pdf文件
  • Ubuntu下利用python读取doc和docx文书档案的始末措施
  • python-docx修改已存在的Word文书档案的报表的字体格式方法
  • Python操作word常见格局言传身教【win3二com与docx模块】

CSV文件是1种广泛的数据存档文件,与TXT文书档案基本相仿,但在内容组织上有一定格式,文件的首行为标题列,之后的公文中的每一行表示二个多少记录。那就如一个二维数据表或excel表格一样。
python三中富含1个csv解析库,可用于读写csv文件,但其读取目的壹般须要是在地头,要读取远程网络上的csv文件要求用urllib.request.urlopen先获得。例如:

#csv远程获取,内存加载读取
from urllib.request import urlopen
import csv
from io import StringIO#在内存中读写str,如果要操作二进制数据,就需要使用BytesIO

try:
 data = urlopen("http://pythonscraping.com/files/MontyPythonAlbums.csv").read().decode("ascii","ignore")
except (URLError,HTTPError) as e:
 print("Errors:\n")
 print(e)

dataFile = StringIO(data)
csvReader = csv.reader(dataFile)
count = 0
for row in csvReader:
 if count < 10:
  print(row)
 else:
  print("...\n...")
  break
 count += 1 

#将数据写入本地csv文件
with open("./localtmp.csv","wt",newline='',encoding='utf-8') as localcsvfile:
 writer = csv.writer(localcsvfile)
 count = 0 
 try:
  for row in csvReader:
   if count < 10:
    writer.writerow(row)
   else:
    break
   count += 1
 finally:
  localcsvfile.close()

csv文书档案的标题行(首行)供给卓殊处理,csv.DictReader能够很好的消除这些标题。DictReader将读取的行转变为python字典对象,而不是列表。标题行的各列名即为字典的键名。

#csv.DictReader读取csv文件,可以有效处理标题行等问题
from urllib.request import urlopen
import csv
from io import StringIO#在内存中读写str,如果要操作二进制数据,就需要使用BytesIO

try:
 data = urlopen("http://pythonscraping.com/files/MontyPythonAlbums.csv").read().decode("ascii","ignore")
except (URLError,HTTPError) as e:
 print("Errors:\n")
 print(e)

dataFile = StringIO(data)
csvReader = csv.reader(dataFile)
dictReader = csv.DictReader(dataFile)
print(dictReader.fieldnames)
count = 0
for row in dictReader:
 if count < 10:
  print(row)
 else:
  print("...\n...")
  break
 count += 1 

3.抓取PDF文档

pdf文书档案的长途抓取与操作,可依靠相比流行的pdfminer叁k库来产生。

#抓取并操作pdf
#pdf READ operation
from urllib.request import urlopen
from pdfminer.pdfinterp import PDFResourceManager,process_pdf
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from io import StringIO,open

def readPDF(filename):
 resmgr = PDFResourceManager()#STEP 1
 retstr = StringIO()#STEP 2
 laparams = LAParams()#STEP 3
 device = TextConverter(resmgr,retstr,laparams=laparams)#STEP 4

 process_pdf(resmgr,device,filename)#STEP 5
 device.close()#STEP 6

 content = retstr.getvalue()
 retstr.close()
 return content

try:
 pdffile = urlopen("http://www.fit.vutbr.cz/research/groups/speech/servite/2010/rnnlm_mikolov.pdf")

except (URLError,HTTPError) as e:
 print("Errors:\n")
 print(e)

outputString = readPDF(pdffile)#也可以读取由pdffile=open("../../readme.pdf")语句打开的本地文件。
print(outputString)
pdffile.close()

4.抓取WORD

老版word使用了二进制格式,后缀名字为.doc,word2007后出现了与OPEN
OFFICE类似的类XML格式文书档案,后缀名叫.docx。python对word文书档案的支撑不够,就像从未完善化解方案。为读取docx内容,能够选取以下方式:
(一)利用urlopen抓取远程word docx文件;
(二)将其转移为内部存款和储蓄器字节流;
(3)解压缩(docx是减掉后文件);
(四)将解压后文件作为xml读取
(五)搜索xml中的标签(正文内容)并拍卖

#读取word docx文档内容
from zipfile import ZipFile
from urllib.request import urlopen
from io import BytesIO
from bs4 import BeautifulSoup

wordFile = urlopen("http://pythonscraping.com/pages/AWordDocument.docx").read()
wordFile = BytesIO(wordFile)
document = ZipFile(wordFile)#
xml_content = document.read("word/document.xml")
#print(xml_content.decode("utf-8"))

wordObj = BeautifulSoup(xml_content.decode("utf-8"),"lxml")
textStrings = wordObj.findAll("w:t")
for textElem in textStrings:
 print(textElem.text)

5.抓取EXCEL

6.抓取HTML源文档

七.抓取HTML表单数据

8.抓取Javascript数据

更多内容请参考专题《python爬取功能汇总》进展学习。

如上正是本文的全体内容,希望对大家的读书抱有扶助,也希望我们多多帮助脚本之家。

您也许感兴趣的篇章:

  • python爬虫爬取网页表格数据
  • Python使用Scrapy爬虫框架全站爬取图片并保存本地的落到实处代码
  • python爬虫爬取快手录制二拾十二线程下载效率
  • python爬取m3u八总是的录像
  • python定向爬取Tmall商品价位
  • python爬虫爬取天猫商城商品消息(selenum+phontomjs)
  • python正则表达式爬取猫眼电影top十0
  • Python使用Selenium+BeautifulSoup爬取天猫商城寻觅页
  • 通过抓取Tmall评论为例批注Python爬取ajax动态变化的多少(精彩)
  • Python完毕爬取和讯神回复轻巧爬虫代码分享

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website