Python:从URL中的Word文件中提取文本

时间:2017-02-14 21:27:26

标签: python python-3.x

如果url包含某个文件,在这种情况下是word文档,请阅读该文档的内容。我已经看到了几个如何从本地文档中提取文本而不是从URL中提取文本的示例。从http地址到ftp是否相同?

from urllib.request import urlopen

url = 'ftp://path/to/file.docx'

txt = urlopen(url).read()

文字的价值是:

b'PK\x03\x04\x14\x00\x06\x00\x08\x00\x00\x00!\x00\xdd\xfc\x957f\x01\x00\x00 \x05\x00\x00\x13\x00\x08\x02[Content_Types].xml \xa2\x04\x02(\xa0\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 ...'

我尝试解码

txt.decode("utf-8", "ignore")

但是这会返回PK ...,然后是其他奇怪的字符

保存文档然后处理它的选项是不可行的。

我做错了什么?

2 个答案:

答案 0 :(得分:0)

我终于找到了解决方案,希望有人帮忙

from urllib.request import urlopen
from bs4 import BeautifulSoup
from io import BytesIO
from zipfile import ZipFile

file = urlopen(url).read()
file = BytesIO(file)
document = ZipFile(file)
content = document.read('word/document.xml')
word_obj = BeautifulSoup(content.decode('utf-8'))
text_document = word_obj.findAll('w:t')
for t in text_document:
    print(t.text)

答案 1 :(得分:0)

使用requestsdocx2txt非常简单:

import requests
import docx2txt
from io import BytesIO

url = "http://url.to.file/sample.docx"
docx = BytesIO(requests.get(url).content)

# extract text
text = docx2txt.process(docx)