【4858.com】python爬取各样文书档案方法归类汇总,Python接口文书档案

By admin in 4858.com on 2019年4月20日

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

在付出进度中,会遇上在指令行下将DOC文书档案(或然是任何Office文书档案)转变为PDF的须求。比方在品种中假如手册是DOC格式的,在等级次序揭发时梦想将其改造为PDF格式,并且保留DOC中的书签,链接等。将该过程整合到营造进程中将供给命令行下进行调换。

通过win32
COM接口实现软件的操作本质上来看跟直接操作软件一样,那跟本人事先日常用的通过各样扩充的零部件只怕库落成各类文件的拍卖有相当大的出入。借使有过Windows下利用Word的经历,那么使用win32
COM应该说是更为方便的一种艺术。

HTML文书档案是互联英特网的首要性文书档案类型,但还设有如TXT、WOXC90D、Excel、PDF、csv等几连串型的文书档案。互连网爬虫不仅要求可以抓取HTML中的敏感音信,也亟需有抓取其余类别文档的才干。上面简要记录一些私有已知的依照python三的抓取方法,以备查阅。

一、介绍

人生苦短,用最得力的章程:<查看Python接口文书档案>

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

迈克尔Suodenjoki体现了接纳Office的COM接口举办指令行下的更动。但其导出的PDF文书档案未有书签。在Office
2007SP第22中学,微软投入了该作用,对应的接口是ExportAsFixedFormat。该措施不仅适用于Word,而且也适用于Excel。

在此以前由此拼凑互连网上的代码完结过Word文书档案的拍卖,明日经过读文书档案从头初阶做一回新的品味。轻易完毕三个Word文件的创办、写入与存款和储蓄。

1.抓取TXT文档

二、使用办法

python自带的接口文书档案突显效果,查看最了不起的接口也正是源接口,不要再浪费时间在百度了,扶助快捷化解实用python模块,定位bug功能
命令:python -m pydoc -p 4567
4567是端口号,运转后,张开:localhost:456七就可以瞥见python接口文书档案了

4858.com 1

 

4858.com,二个轻易的Python脚本来呈现什么转移DOC为PDF。该脚本供给Office 200七 SP2,
Python 二.六与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)

如上正是本文的全体内容,希望对大家的求学抱有援救,也愿意大家多多协助脚本之家。

程序运营没有错误报出,运营的长河中会看到Word软件的展开以及操作最终关闭的进程。试行完结后,当前文件夹中多了3个名字为python_【4858.com】python爬取各样文书档案方法归类汇总,Python接口文书档案。word_demo.docx的文本。张开文件能够见见里边写入的始末如下:

下边包车型大巴办法是已知目的网页为txt文本时的抓取。事实上,在机关抓取网页时,必须思虑对象网页是不是为纯文本,用何种编码等难点。

您可能感兴趣的稿子:

  • python批量实现Word文件转变为PDF文件
  • 运用python程序生成word和PDF文书档案的法子
  • 动用python将pdf输出为txt的实例批注
  • Python完结pdf文书档案转txt的章程言传身教
  • python达成pdf调换来word/txt纯文本文件

4858.com 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文书档案的写入与保留方法便是作者分享给我们的全体内容了,希望能给大家1个参照,也期待我们多多支持脚本之家。

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文件是一种常见的数额存档文件,与TXT文书档案基本接近,但在剧情组织上有一定格式,文件的首行为标题列,之后的文本中的每一行表示2个数额记录。那就好像3个二维数据表或excel表格一样。
python叁中包含3个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,word200柒后边世了与OPEN
OFFICE类似的类XML格式文书档案,后缀名称为.docx。python对word文档的支撑不够,就如未有健全消除方案。为读取docx内容,能够运用以下办法:
(一)利用urlopen抓取远程word docx文件;
(2)将其更动为内部存款和储蓄器字节流;
(三)解压缩(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爬取m三u八三番五次的录像
  • python定向爬取天猫商城商品价位
  • python爬虫爬取Taobao商品音讯(selenum+phontomjs)
  • python正则表达式爬取猫眼电影top100
  • Python使用Selenium+BeautifulSoup爬取Taobao找寻页
  • 经过抓取Taobao商议为例讲授Python爬取ajax动态变化的多少(优秀)
  • Python达成爬取搜狐神回复简单爬虫代码分享

发表评论

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

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有