注册 登录
编程论坛 Python论坛

数据抓取

Zz176543 发布于 2023-03-25 13:46, 932 次点击
有没有方法能快速的从多页PDF中抓取特定的数据到EXCEL中?
7 回复
#2
东海ECS2023-03-25 16:28
要实现从多页PDF中抓取特定的数据到Excel中,需要使用Python中的一些第三方库和工具。以下是一种实现方案:
需要安装的库和工具如下:


    1.PyPDF2:用于读取PDF文件的内容
    2.pandas:用于处理和导出Excel文件
    3.tabula-py:用于从PDF中抓取表格数据

可以使用pip安装这些库和工具

读取PDF文件并抓取数据
使用PyPDF2读取PDF文件,并使用tabula-py从PDF中抓取表格数据。以下是一个读取PDF文件并抓取数据的示例代码:

程序代码:

import PyPDF2
import tabula
# 读取PDF文件
pdf_file = open('example.pdf', 'rb')
pdf_reader = PyPDF2.PdfFileReader(pdf_file)
# 遍历PDF中的每一页并抓取表格数据
dataframes = []
for page_num in range(pdf_reader.getNumPages()):
    # 从PDF中抓取表格数据
    tables = tabula.read_pdf('example.pdf', pages=[page_num+1], lattice=True)
    # 将表格数据转换为DataFrame对象
    for table in tables:
        df = pd.DataFrame(table)
        dataframes.append(df)
# 关闭PDF文件
pdf_file.close()
# 合并所有DataFrame对象
result_df = pd.concat(dataframes)

在这个示例代码中,使用tabula.read_pdf函数从PDF中抓取表格数据。参数pages用于指定要抓取的页码,lattice参数用于指定是否使用网格模式来处理表格数据。


处理数据并导出Excel文件
使用pandas处理数据,并将结果导出到Excel文件中。以下是一个处理数据并导出Excel文件的示例代码:

程序代码:

# 处理DataFrame对象中的数据
result_df = result_df.dropna()  # 删除包含NaN值的行
result_df = result_df.astype(str)  # 将所有数据类型转换为字符串类型
#
导出数据到Excel文件
result_df.to_excel('result.xlsx', index=False)


完整代码

程序代码:

import PyPDF2
import pandas as pd
import tabula
# 读取PDF文件
pdf_file = open('example.pdf', 'rb')
pdf_reader = PyPDF2.PdfFileReader(pdf_file)
# 遍历PDF中的每一页并抓取表格数据
dataframes = []
for page_num in range(pdf_reader.getNumPages()):
    # 从PDF中抓取表格数据
    tables = tabula.read_pdf('example.pdf', pages=[page_num+1], lattice=True)
    # 将表格数据转换为DataFrame对象
    for table in tables:
        df = pd.DataFrame(table)
        dataframes.append(df)
# 关闭PDF文件
pdf_file.close()
# 合并所有DataFrame对象
result_df = pd.concat(dataframes)
# 处理DataFrame对象中的数据
result_df = result_df.dropna()  # 删除包含NaN值的行
result_df = result_df.astype(str)  # 将所有数据类型转换为字符串类型
#
导出数据到Excel文件
result_df.to_excel('result.xlsx', index=False)


[此贴子已经被作者于2023-3-25 16:31编辑过]

#3
Zz1765432023-03-25 20:18
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录

能从这种多页PDF中选取上述excel中的特定数据到Excel表格中吗?

[此贴子已经被作者于2023-3-25 20:22编辑过]

#4
东海ECS2023-03-25 20:30
没有明白您的意思
#5
Zz1765432023-03-25 22:08
回复 4楼 东海ECS

只有本站会员才能查看附件,请 登录

需要从多页(50+.120-)的这个PDF文件中抓取这三项数据,导入excel中
#6
pvm20002023-03-26 04:26
一页一页抓呗
#7
东海ECS2023-03-26 10:38
回复 5楼 Zz176543



使用Python的PyPDF2库打开PDF文件。

程序代码:

import PyPDF2
pdf_file = open('file.pdf', 'rb')
pdf_reader = PyPDF2.PdfFileReader(pdf_file)



确定您要抓取数据的页面范围。例如,如果您要从第50页抓取数据,则可以使用以下代码:


page_num = 49  # 0-based index
page = pdf_reader.getPage(page_num)



使用PyPDF2的extractText()方法从页面中提取文本。


page_content = page.extractText()



使用Python的pandas库将数据加载到DataFrame中。


import pandas as pd
data = pd.read_csv('data.csv')


使用pandas的to_excel()方法将数据导出到Excel文件中。

data.to_excel('output.xlsx', index=False)

需要注意的是,PDF文件中的数据可能需要进行额外的清洗和处理,以确保数据的正确性和一致性。
#8
东海ECS2023-03-26 10:39
您先把Excel表格样式做好,填入单元格就行了
1