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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

九月镇灵将

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值