python 读取本地txt文件的doc的url,自动下载,查询内容

版权声明:版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/abc666666_6/article/details/85034943

参考文章
python读写doc/docx/txt/xls文件
python读取word文档表格里的数据
使用python找到指定路径下的全部txt(可以是jpg,doc等等)文件

获取txt中保存的url地址

import re
import urllib.request


# 读取本地html中url地址(提前改下后缀)
with open(r"C:/Users/mfml1073278014/Desktop/1.txt",'r') as f:
    # print(type(f.read()))
    l= re.findall(r"http://jyu.good-edu.cn/editor_files/\S*.doc", f.read())  # 正则,匹配里面的url
    count = 0
    for url in l:
        count += 1
        print(url)
        urllib.request.urlretrieve(url, str(count)+"_info.doc")
    print(count)

下载保存的url中的内容

import os
root = "E:/Django/DA/chapter01/docx"

# 递归遍历,找到需要的文件名,保存在ret中
def findfile(path, typ, ret):
    filelist = os.listdir(path)
    for filename in filelist:
        de_path = os.path.join(path, filename)
        if os.path.isfile(de_path):
            if de_path.endswith(typ): 
                ret.append(de_path)
        else:
            findtxt(de_path, typ, ret)
ret = []
findfile(path=root, typ=".doc", ret=ret)
print(ret)

改变格式

from win32com import client as wc
# 转换 doc to docx
def toDocx(path):
    word = wc.Dispatch('Word.Application')

    doc = word.Documents.Open(path)  # 目标路径下的doc文件

    extension = os.path.splitext(path)[1]  # 获得后缀
    path = path.replace(extension, '.docx')  #改后缀为docx

    doc.SaveAs(path, 12, False, "", True, "", False, False, False, False)  # 转化后路径下的文件
    doc.Close()
    word.Quit()
    
for p in ret:
    print(p)
    toDocx(p)    # 转换为docx
    os.remove(p)    # 删除原有的doc文件

遍历docx文件,查找关键字

import docx
final = set()


def find_info(target):
    # 获取文档对象
    for word in ret:
        file = docx.Document(word)
        # 输出每一段的内容
        for para in file.paragraphs:
            # print(para.text)
            eight_date = re.findall(target, para.text, re.IGNORECASE)
            if eight_date:
                final.add(word)
        try:
            tables = file.tables  # 获取文件中的表格集
            table = tables[0]  # 获取文件中的第一个表格
            for i in range(1, len(table.rows)):  # 从表格第二行开始循环读取表格数据
                result = table.cell(i, 0).text + "" + table.cell(i, 1).text + table.cell(i, 2).text + table.cell(i, 3).text
                # cell(i,0)表示第(i+1)行第1列数据,以此类推
                eight_date = re.findall(target, result, re.IGNORECASE)
                if eight_date:
                    final.add(word)
        except:
                # print("IndexError: list index out of range")
                pass

find_info("c\+\+")
for s in final:
    print(s)

猜你喜欢

转载自blog.csdn.net/abc666666_6/article/details/85034943