前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python网络爬虫文档读取-微软Word文档和.docx

python网络爬虫文档读取-微软Word文档和.docx

作者头像
用户7886150
修改2021-01-15 17:04:15
1.3K0
修改2021-01-15 17:04:15
举报
文章被收录于专栏:bit哲学院bit哲学院

参考链接: 通过Python-Docx模块在Python中读写MS Word文件

大约在2008年以前,微软Office产品中的Word用.doc文件格式。这种二进制格式很难读取,而且能够读取word格式软件很少。为了跟上时代,让自己的软件能够符合主流软件的标准,微软决定使用Open Office的类XML格式标准,此后新版Word文件才与其他文字处理软件兼容,这个格式就是.docx。 

  不过Python对这种Google Docs,Open Office和Microsoft Office都在使用的.docx格式支持还不够好。虽然有一个python-docx库,但是只支持创建新文档和读取一些基本的文件数据,如文件大小和文件标题,不支持正文读取。如果想要从Microsoft Office文件的正文内容,我们需要自己动手找方法: 

  第一步是从文件读取XML: 

 from zipfile import ZipFile

from urllib.request import urlopen

from io import BytesIO

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'))

 程序执行结果如下: 

  通过执行结果发现,确实包含了大量的信息,但是都被隐藏在XML里面,好在文档的所有正文内容都包含在<w:t>标签里面。标题的内容也是如下,这样就比较好处理了。改进后的程序代码如下: 

 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')

wordObj=BeautifulSoup(xml_content.decode('utf-8'),"xml")

textString=wordObj.findAll("w:t")

for textElem in textString:

    print(textElem.text)

     在此处需要注意一个问题,因为此处是先将word文档转换为xml文档,所以在使用BeautifulSoup进行文档内容解析的时候,需要执行解析器的xml,这样findAll才能正常执行。不可以不指定。 

执行结果如下: 

你会看到这里docx单独一行,这是因为在原始的XML里,它是由<w:proofErr w:type="spellStart"/>标签包围的。这是Word用红色波浪线高亮显示"docx"的方式,提示这个词可能拼写错误。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档