python 爬虫 表格和word文档table处理

表格解析

导入包

import xlrd

下面方法针对的是表格的每列数据是有标题栏的,通过锁定标题栏,然后以标题栏为字典的key,以每行的数据分别为对应的value,这样就获得便捷的数据

file_content = base64.b64decode(body)
book = xlrd.open_workbook(file_contents=file_content)
sheet1 = book.sheets()[0]
# 总行数
nrows = sheet1.nrows
row_num = 0
# 获取到表格中每行的标题
for row in range(nrows):
    values = sheet1.row_values(row)
    if '' not in values:
        row_num = row
        break

# 从标题所在行开始,往下遍历每行数据,以字典的格式存储数据
key_list = sheet1.row_values(row_num)
if len(key_list):
    for row in range(row_num + 1, nrows):
        values = sheet1.row_values(row)
        dic = {}
        for i in range(len(key_list)):
            dic[key_list[i]] = values[i]

注意:上面的表格数据是二进制流的,要打开本地表格文件使用下面的代码

xlrd.open_workbook(filePath)

docx word格式解析

导入包

from docx import Document

注意:docx库只能解析docx格式的文档,无法解析doc格式的文档,需要转格式。

def get_word_table(path):
    document = Document(path)  # 读入文件
    tables = document.tables  # 获取文件中的表格集
    table = tables[0]  # 获取文件中的第一个表格
    info_keys = [
        table.cell(0, 0).text,
        table.cell(0, 1).text,
        table.cell(0, 2).text,
        table.cell(0, 3).text,
        table.cell(0, 4).text
    ]
    try:
        info_keys.append(table.cell(0, 5).text)
    except:
        pass

    for i in range(1, len(table.rows)):  # 从表格第二行开始循环读取表格数据
        info = {
            info_keys[0]: table.cell(i, 0).text,
            info_keys[1]: table.cell(i, 1).text,
            info_keys[2]: table.cell(i, 2).text,
            info_keys[3]: table.cell(i, 3).text,
            info_keys[4]: table.cell(i, 4).text}
        try:
            info[info_keys[5]] = table.cell(i, 5).text
        except:
            pass

关于这两个库的其它操作可以自行百度。。。

posted @ 2023-01-14 12:38  七夜魔手  阅读(6)  评论(0编辑  收藏  举报  来源