用Python提取PDF表格:pdfplumber与PyMuPDF实测对比

深入探索 PDF 数据提取:PyMuPDF 与 pdfplumber 的对比与实战 PyMuPDF 是一个基于 MuPDF 的高性能 Python 库,用于处理 PDF 文件。它支持多种功能,包括文本提取、图像提取、表格提取、页面渲染等。PyMuPDF 的底层是用 C++ 编写的,因此在处理大型文件时表现出色。优点:高性能、功能全面,支持多种格式提取。缺点:API 较复杂,文档相对较少。适用场景:适合处理大型 PDF 文件,需要提取多种格式数据。 阅读详情

前言

做 PDF 翻译的时候,正文段落其实好办——取文本、翻译、写回,只要不改版式就行。真正难的是表格。

表格是"格式保留"里最脆弱的部分:它不是一段流动的文字,而是一个二维网格。翻错了位置,数字和项目名就会对不上号,比排版乱掉更严重。

我这次把两件事都测了一遍:

  1. 提取:pdfplumber 和 PyMuPDF 谁更靠得住?在什么情况下会崩?
  2. 回填:把译文写回原来的单元格,到底会不会溢出?

测试环境:Windows 11,Python 3.13.12,PyMuPDF 1.28.2,pdfplumber 0.11.10。

测试样本怎么造的

自己造样本的好处是有 ground truth,可以逐格算准确率。

我生成了三种变体,每个都是 12 页,每页 10 行 × 4 列(Item Code / Description / Qty / Unit Price),一共 120 行、480 个数据单元格:

变体特征考察点
table_ruled_12p.pdf规范框线网格理想情况能不能 100% 还原
table_borderless_12p.pdf无框线,只靠文字对齐;描述列折成两行列边界靠猜时会发生什么
table_merged_12p.pdf有框线,但表头 colspan=3 合并合并单元格对整表的影响

评分用两个指标,比"单元格数对不对"更能说明问题:

  • 单元格召回率:归一化后逐格比对,看多少个单元格的内容被完整取到
  • 整行还原率:一行 4 个值是否落在同一条输出行里——这才是回填可用的前提

实测结果

有框线:两个库都满分

table_ruled_12p.pdf
  pdfplumber  tables=12  cell_recall=100.00%  row_recall=100.00%  time=0.3330s
  PyMuPDF     tables=12  cell_recall=100.00%  row_recall=100.00%  time=0.4038s

这个结果符合预期。有框线的表,网格线本身就是答案,两库都直接用线的交点建网格,不需要猜。速度上 pdfplumber 略快 20% 左右,12 页差 0.07 秒,业务上可以忽略。

无框线 + 多行单元格:两个库一起崩

table_borderless_12p.pdf
  pdfplumber  tables=12  cell_recall=75.00%  row_recall=0.00%  time=0.4640s
  PyMuPDF     tables=12  cell_recall=75.00%  row_recall=0.00%  time=0.6044s

单元格召回 75%、整行还原 0%——两个库给出了完全一样的数字,这不是巧合,是因为它们用了同一类方法:靠"文字之间的水平间隙"推断列边界。

问题出在描述列。这一列的文字最长、还会换行,于是:

  • 单行内看,描述列内部词与词之间也有间隙,被误判成列边界,一列文字被拦腰切成三四段
  • 换行后,第二行的起始位置和第一行不同,两行被当成了两行不同的数据

结果就是每个逻辑单元格碎成三四块,且没有任何一条输出行能凑齐 4 个值。75% 恰好等于 4 列里 3 列完好(Item Code / Qty / Unit Price 都是短值,没被切断),描述列整列报废。

合并表头:两库都塌成一片

table_merged_12p.pdf
  pdfplumber  tables=12  cell_recall=25.00%  row_recall=0.00%  time=0.5323s
  PyMuPDF     tables=12  cell_recall=25.00%  row_recall=0.00%  time=0.8094s

第 1 页第 1 行提取出来是这样的(两库输出一致):

[['Order Detail (colspan=3)', 'Amount'],
 ['Precision ball bearing, sealed,\nITM-0000 stainless steel 1', '3.75']]

表头识别对了(合并单元格被正确当成一格),但数据行整行塌成了一格:物料编码、描述、数量全被塞进同一个单元格。原因还是同一个——合并表头让竖线的分布上下不一致,间隙推断失效。

小结

场景pdfplumberPyMuPDF
有框线100% / 100% / 0.333s100% / 100% / 0.404s
无框线 + 多行75% / 0% / 0.464s75% / 0% / 0.604s
合并表头25% / 0% / 0.532s25% / 0% / 0.809s

结论很清楚:两个库的能力边界是同一条线——表格有没有完整框线。有框线时它们是成熟工具,无框线时它们只是"猜",而且猜错的方式是静默的:不报错,只是给你一份看起来是表格、实际上对不上号的数据。

用投影法把无框线表救回来

既然靠"单行间隙"不行,那就换一个信号:整张表累积下来的空白带。

思路是这样的:把表格区域内所有文字的 x 区间投影到 x 轴上取并集,那么"从来没有被任何文字覆盖过"的竖条,就是列与列之间真正的沟槽(gutter)。它的中点就是列边界。

关键代码:

import pymupdf

def cluster_lines(words, tol=2.0):
    """按 y 中心把词聚成文本行,容差 2pt"""
    words = sorted(words, key=lambda w: ((w[1] + w[3]) / 2, w[0]))
    lines, cur = [], []
    for w in words:
        yc = (w[1] + w[3]) / 2
        if not cur:
            cur = [w]
            continue
        yc0 = sum((c[1] + c[3]) / 2 for c in cur) / len(cur)
        if abs(yc - yc0) <= tol:
            cur.append(w)
        else:
            lines.append(sorted(cur, key=lambda x: x[0]))
            cur = [w]
    if cur:
        lines.append(sorted(cur, key=lambda x: x[0]))
    return lines

def derive_bounds(data_lines, ncols, min_gap=8.0):
    """投影法:整表累积的空白带 -> 列边界"""
    occ = sorted((w[0], w[2]) for ln in data_lines for w in ln)
    merged = [list(occ[0])]
    for a, b in occ[1:]:
        if a <= merged[-1][1] + 0.5:          # 区间有重叠就合并
            merged[-1][1] = max(merged[-1][1], b)
        else:
            merged.append([a, b])
    # 相邻区间的缝隙 = 候选沟槽,太窄的丢掉
    gaps = [(merged[i][1], merged[i + 1][0]) for i in range(len(merged) - 1)]
    gaps = [g for g in gaps if g[1] - g[0] >= min_gap]
    if len(gaps) < ncols - 1:
        return None
    gaps.sort(key=lambda g: -(g[1] - g[0]))    # 取最宽的 ncols-1 条
    keep = sorted(gaps[:ncols - 1])
    return [-1e9] + [(a + b) / 2 for a, b in keep] + [1e9]

列数从表头行拿(表头词按水平间隙归组),行分组则必须先算行锚点,再按 y 带归属:

# 1) 行锚点:第 1 列含行首键(ITM-xxxx)的行,其 y 中心就是这一行的锚
anchors = []
for ln in data_lines:
    buckets = assign(ln, bounds, ncols)
    if " ".join(buckets[0]).strip().lower().startswith("itm-"):
        anchors.append(sum((w[1] + w[3]) / 2 for w in ln) / len(ln))

# 2) 每一行文字归到最近的锚点,距离超过半行距就丢弃
pitch = min(anchors[i + 1] - anchors[i] for i in range(len(anchors) - 1))
cells = [[[] for _ in range(ncols)] for _ in anchors]
for ln in data_lines:
    yc = sum((w[1] + w[3]) / 2 for w in ln) / len(ln)
    ri = min(range(len(anchors)), key=lambda i: abs(yc - anchors[i]))
    if abs(yc - anchors[ri]) > pitch * 0.6:
        continue
    for bi, words in enumerate(assign(ln, bounds, ncols, with_words=True)):
        for w in words:
            cells[ri][bi].append(((w[1] + w[3]) / 2, w[0], w[4]))

这一步是我这次踩得最深的坑。最初的写法是"遇到行首键就开新行,其它行追加为续行",看起来很自然,结果是整体错位一行。

原因是多行单元格跨了行锚点:描述列第 1 行的文字,y 坐标在数字行的上方;按顺序扫描时它会先被追加到上一行去。用真实 PDF 验证时表现为"每行的描述文字都是上一行的",而单元格召回率居然是 100%——只有整行还原率会暴露它。

换成"先算锚点、再按 y 带归属"之后:

table_ruled_12p.pdf        rows=120  cell_recall=100.00%  row_recall=100.00%  time=0.0162s
table_borderless_12p.pdf   rows=120  cell_recall=100.00%  row_recall=100.00%  time=0.0133s
table_merged_12p.pdf       rows=0    cell_recall=0.00%    row_recall=0.00%    time=0.0097s

无框线场景从 75% / 0% 提到 100% / 100%,而且因为不做表格检测,耗时从 0.46s 降到 0.013s(快了约 35 倍)。

但要诚实说清代价:合并表头这一档它直接交白卷(0 行)。因为这套方法依赖"Item Code"这样的表头锚点,而合并表头恰好把这个锚点破坏了。所以它不是替代品,是补位——有框线、结构规整的表用库,无框线、多行、表头规范的用投影法。

译文回填:真正的约束不是"放不下"

提取只是上半场。把译文写回原单元格,会发生什么?

我用 PyMuPDF 的 insert_textbox 做权威判定:它返回非负值表示放得下(返回剩余空间),返回负值表示溢出。为了拿到真实单元格矩形,我先从页面矢量图元里筛出"贯穿整表宽度的横线 + 贯穿整表高度的竖线"(这份 PDF 是规范网格,还原出来正好是 11 行 × 4 列,与 find_tables() 报告一致)。

先看一个基础事实,同字号下中文比英文窄:

import pymupdf
helv, cjk = pymupdf.Font("helv"), pymupdf.Font("china-s")
# 14 组人工核对的 EN→ZH 对照
# 平均:中文宽度 / 英文宽度 = 0.752
# 也就是 9pt 中文的横向占用只有 9pt 英文的 75%

中文横向只占英文的 75%。所以"中文更长会溢出"这个担心,方向反了——14 组对照在 9pt 原字号下回填,溢出 0 个。

那真正的约束在哪?在纵向:

9.0pt: 英文 9 行(行高 13.33pt) / 中文 9 行(行高 13.33pt)
12.0pt: 英文 6 行(行高 20.00pt) / 中文 7 行(行高 17.14pt)

9pt 文字需要约 13.3pt 行高(字号的 1.48 倍),中英文一致。于是一个 25.5pt 高的单元格只能排 1 行,34pt 的能排 2 行。用真实单元格测出来的中文容量是这样的:

列宽行高 25.5pt行高 34.1pt
79.4pt8 字16 字
249.4pt27 字38 字
56.7pt6 字12 字
96.4pt10 字20 字

这张表是回填的预算表。往 56.7pt 宽、25.5pt 高的窄列里塞一句 13 字的中文,9pt 下就溢出 4.9pt,得缩到 7.5pt 才放得下。反过来,中文更短带来的 25% 余量也可以换成更大的字号(实测这些单元格的中文上限在 14.5–20.5pt,平均 16.86pt),但整表统一字号时上限是 14.5pt,被最窄的那格卡住。

还有一点要提前防住:无框线表如果直接拿库生成的网格去回填,你会把译文写进碎片里。实测 PyMuPDF(strategy="text") 在无框线表上给出的是 41 行 × 6 列,而真实逻辑网格是 11 行 × 4 列——每个逻辑单元格被拆成约 3.7 段,回填时可用高度只剩四分之一。

回填的实操建议:

  1. 先用真实网格(或投影法)拿到逻辑单元格矩形,不要直接用检测结果
  2. 写回时按目标矩形的高度算"能排几行",再决定字号:可用行数 = floor(可用高度 / 字号 / 1.48)
  3. 字号不要为了填满而放大——同一页还有没被翻译的数字列,字号跳变会很突兀
  4. 擦原文用 add_redact_annot + apply_redactions(graphics=0),只擦文字层,别把表格线一起擦掉
import pymupdf

pg.add_redact_annot(pymupdf.Rect(x0, y0, x1, y1))
pg.apply_redactions(graphics=0)        # 关键:graphics=0 保留矢量表格线

rect = pymupdf.Rect(x0 + 1.2, y0 + 0.6, x1 - 1.2, y1 - 0.6)
fs = 9.0
while fs > 4 and pg.insert_textbox(rect, zh, fontsize=fs,
                                   fontname="china-s") < 0:
    fs -= 0.5                          # 溢出就缩字号,直到放得下
pg.insert_textbox(rect, zh, fontsize=fs, fontname="china-s")

结论

  1. pdfplumber 与 PyMuPDF 在有框线表上等价,都是 100% / 100%。选型看生态习惯就行。
  2. 无框线 + 多行单元格是两个库的共同盲区(75% / 0%),而且失败是静默的——它照样给你返回列表,只是内容对不上号。
  3. 投影法能补上这个洞(100% / 100%,还快 35 倍),但代价是依赖表头锚点,合并表头场景直接失效。别指望单一方案通吃。
  4. 回填的约束在纵向不在横向。中文比英文窄 25%,横向不会溢出;一个 9pt 汉字需要 13.3pt 行高,窄列里译文一长就得缩字号。
  5. 如果表格结构复杂到两库一法都搞不定,那这类文档更理性的做法是别自己拼网格——交给能完整保留版式的在线翻译链路,让它按原版面直接产出译文,而不是先拆成网格再拼回去。

实测脚本和测试样本已归档,可以直接复跑:

  • gen_table_pdfs.py:生成三种变体的测试 PDF + ground truth
  • bench_table_extract.py:两库对比评分
  • custom_table_extract.py:投影法实现
  • backfill_overflow.py:译文回填的容量与溢出实测

标签:PDF翻译、Python、表格提取、PyMuPDF、效率工具

PDF解锁神器:用PyMuPDF与pdfplumber告别手动提取 在处理PDF文件时,手动提取信息费时费力。通过PyMuPDF和pdfplumber,程序员可以轻松自动化提取文本和元数据,让PDF文件的处理变得简单高效,彻底告别繁琐的手动操作。 阅读详情

相关推荐

PDF表格提取实战:pdfplumber与pymupdf双引擎工程方案

PDF表格提取是数据科学中连接非结构化文档与结构化分析的关键环节。其本质并非简单文本读取,而是融合文本布局分析、图像处理与规则推理的复合任务。核心挑战在于PDF作为排版容器缺乏语义结构,导致复制粘贴失效、跨页表头丢失、扫描件OCR不准等问题。技术价值体现在支撑金融财报解析、政务数据治理、医疗单据自动化等高价值场景。本文聚焦Python工程实践,深入解析pdfplumber的文本流建模思想与pymupdf的扫描件预处理能力,提供可复用、可维护、可嵌入CI/CD的双引擎协同方案。

702

PDF与DOCX处理库选型分析

PDF与DOCX处理库选型报告摘要 本报告对比了主流PDF(PyMuPDF、pdfplumber)和DOCX(python-docx、mammoth、docx2txt)处理库。PyMuPDF在PDF处理速度上显著领先(快28倍),但受限于AGPL许可证;pdfplumber在表格提取和中文支持更优。DOCX处理推荐python-docx(全功能支持)和mammoth(HTML转换)。商业项目建议选择MIT许可的pdfplumber+python-docx组合,规避AGPL风险。性能与功能需求是选型关键。(1

weixin_40378424的博客 507

Python实战:用Streamlit打造PDF表格与图片提取神器

本文介绍了一个基于Python和Streamlit开发的PDF处理工具,能够自动提取PDF中的表格和图片。工具使用pdfplumber库提取表格数据并导出为Excel,利用PyMuPDF提取图片内容。文章详细说明了环境搭建、核心功能实现(包括表格和图片提取)、遇到的常见问题及解决方案。该工具仅需不到100行代码,即可实现高效的PDF内容提取功能,适用于办公自动化场景,并支持后续扩展更多PDF处理功能。作者还提供了完整的Github源码链接和详细的开发思路。

weixin_42636075的博客 813

Python PDF处理库深度对比:PyMuPDF、pypdfium2、pdfplumber、pdfminer的关系与区别

Python PDF处理库深度对比:PyMuPDF、pypdfium2、pdfplumber和pdfminer各有侧重。PyMuPDF基于MuPDF引擎,功能全面且性能最佳,适合编辑/创建PDF;pypdfium2源自Google PDFium,擅长精确渲染;pdfplumber专精表格/文本提取,易用性高;pdfminer作为底层工具适合研究PDF结构。性能测试显示PyMuPDF处理速度最快(2.3s/1000页),pdfplumber表格提取最便捷。

engchina的专栏 4755

Python PDF文本提取实战:PyMuPDF、pdfplumber与pypdf深度对比与避坑指南

PDF文档作为一种通用的跨平台文件格式,其核心原理是将文本、图像和矢量图形封装为独立于软件、硬件和操作系统的页面描述。在数据处理与自动化领域,将PDF中的非结构化文本转换为可编辑、可分析的纯文本,是实现文档数字化和信息挖掘的关键技术环节。Python凭借其丰富的生态库,为此提供了高效的技术解决方案。PyMuPDF凭借其C库绑定,在文本提取速度和底层控制上表现卓越,尤其适合处理大型文档;而pdfplumber则在表格提取和精细版面分析方面具有独特优势,其清晰的字符、单词对象模型便于复杂的布局处理。这些工具的技

weixin_30598225的博客 372

Python实战:用PyMuPDF和pdfplumber提取PDF表格数据,哪个更香?

本文深入对比了PyMuPDF和pdfplumber在PDF表格数据提取中的表现,通过实际代码演示和性能测试,帮助用户选择最适合的工具。PyMuPDF在处理大型PDF时效率更高,而pdfplumber在复杂表格提取上更精准。文章还提供了高级应用技巧和典型问题解决方案,适合数据分析师和Python开发者参考。

weixin_42565865的博客 403

pdfplumber vs PyMuPDF:PDF文本、图像和表格识别的比较

pdfplumber vs PyMuPDF:PDF文本、图像和表格识别的比较

engchina的专栏 3740

Python PDF文本提取实战:PyPDF2、pdfplumber与PyMuPDF选型与OCR集成

PDF文档因其格式稳定而成为文档交换的标准,但其内部文本常被“锁定”,难以直接编辑和处理。文本提取技术通过解析PDF内部结构或结合OCR(光学字符识别)技术,将非结构化的文档内容转化为可编辑、可分析的文本数据,为自动化办公、数据分析与知识管理提供了关键支持。在Python生态中,PyPDF2、pdfplumber和PyMuPDF是处理PDF文本提取的主流工具,它们分别适用于简单操作、精确提取与高性能处理等不同场景。面对扫描版PDF,结合Tesseract-OCR引擎的集成方案成为标准解法。本文聚焦于PDF文

weixin_34198453的博客 352

使用Python识别/提取PDF中的字符、文字

1.升级Python 之前win10 x64操作系统上安装的是python3.7.0版本(此版本也能进行本文的工作)。出于后续识别图片中文字的需要,还是将其升级到了python 3.8版本。 并不用卸载旧的 python3.7.0版本,在官网下载python-3.8.10-amd64.exe文件后,安装,将安装目录添加至Path环境变量。同时屏蔽(或删除)之前 python3.7.0版本的环境变量即可。 重启PC,新的环境变量生效。 2.使用Python识别PDF中字符、文字 声明: 所使用的PDF不能是

thequitesunshine007的博客 1万+

【Python办公】Python如何批量提取PDF中的表格

Python自动化批量提取PDF表格数据指南 本文介绍了使用Python自动化提取PDF表格数据的四种工具和方法:tabula-py、camelot-py、pdfplumber和PyMuPDF。主要内容包括: 工具对比:各库的特点和适用场景 环境配置:安装依赖和Java环境设置 tabula-py使用:基础和高阶表格提取方法 camelot-py应用:高精度提取和质量评估 这些方法可显著提高PDF表格提取效率,支持批量处理和多种输出格式。文章提供了完整的代码示例,适用于不同复杂度的PDF表格提取需求。 (字

weixin_42636075的博客 977

fitz 提取pdf表格

fitz实现 pdf剪裁

every place is the center of the universe 1606

医学文献PDF表格自动提取与结构化:三种方案性能实测

本文对比了三种Python开源方案(Camelot、PDFPlumber、PyMuPDF)用于医学PDF表格数据提取。Camelot适合标准边框表格,准确率最高;PDFPlumber擅长处理无边框复杂表格;PyMuPDF速度最快但需定制代码。实测显示,PDFPlumber在成功率(92%)和速度(1.8秒/表)上表现最佳,PyMuPDF内存占用最小(45MB)。针对医学文献的特殊性(跨页表格、医学术语等),文章提供了优化技巧和组合方案建议,并开源了集成工具包,可显著提升Meta分析等场景的数据提取效率。

2501_93420214的博客 1037

Python自动化PDF文本与图片提取:PyMuPDF与pdfplumber实战指南

PDF文档处理是数据提取与自动化流程中的常见需求,其核心在于解析文档的页面结构与元素坐标。通过编程方式读取PDF,可以实现对文本块和图像对象的精准定位与提取,这为文档自动化、信息抽取及知识库构建提供了技术基础。在Python生态中,PyMuPDF凭借其基于C语言后端的处理速度和对文本坐标信息的保留,成为处理大型PDF的高性能选择;而pdfplumber则以其友好的API和精细的字符级控制,擅长应对复杂版面的信息抽取。结合Pillow进行图像处理,这套技术方案能有效应用于合同关键条款批量核对、报告数据图表抽取

weixin_32705179的博客 331

从pdf中提取图片、表格、公式

安装环境: python3.7 pip3 install pymupdf==1.16.8(最新版本会报错) #!/usr/bin/python3 # -*- coding: utf-8 -*- # @Time : 2019/3/19 08:51 # @Author : qizai # @File : fetch_pdf_v1.py # @Software: PyCharm import fitz #pip3 install pymupdf==1.16.8 import time impor

wxkhturfun的博客 5740

Python解析PDF研报:pdfplumber与PyMuPDF的表格提取实战

PDF是日常办公与数据分析中最常见的文档格式之一,但其中表格数据的提取往往令人头疼。Python生态提供了多个高效解析库,其中pdfplumber凭借内置的extract_table功能,在处理带线框的财务、投资类报告时表现稳定;而PyMuPDF则以极快的渲染和文本抽取速度见长。解析PDF不仅仅是调库,还需要理解页面坐标、过滤页眉页脚、处理多栏布局,以及应对无竖线表格的列识别问题。通过坐标聚类、正则表达式清洗和Pandas结构化转换,原始PDF能被整理成可用于分析的DataFrame。这套技术链在投研分析、

weixin_29587015的博客 235

手把手教你校准垂起固定翼(VTOL)遥控器与电调:从零到飞的完整流程

本文详细介绍了垂起固定翼(VTOL)遥控器与电调的校准流程,从基础认知到飞行前检查,涵盖遥控器通道配置、电调校准、舵机方向调整等关键步骤。通过图文并茂的指导,帮助无人机爱好者安全完成VTOL调试,确保首飞成功。特别强调多旋翼模式、过渡模式和固定翼模式的设置要点,适合新手和进阶用户参考。

jenkins8butler的博客 357

PyMuPDF vs pdfplumber vs pypdf:PDF 文本提取实测对比(翻译预处理视角)

做 PDF 翻译预处理时,第一步永远是"把文本从 PDF 里干净地拿出来"。这一步的选型直接决定后面整条流水线的质量:提取出来的文本顺序乱了,翻译对齐就废;坐标信息丢了,版面重建就没戏。网上三库对比的文章不少,但大多停留在"都能提取文本"的层面。本文以**翻译预处理**为视角,在真实的 30 页报告 PDF 上跑了一轮量化实测,把文本速度、表格提取、坐标信息三个硬指标摆出来,结论直接可用。 测试环境:Windows 11,Python 3.13,pymupdf 1.28.2 / pdfplumber ...

SamChan90的博客 331

Keil 编译输出信息分析:Program size: Code, RO-data , RW-data, ZI-data

一般 MCU 包含的存储空间有:片内 Flash 与片内 RAM,RAM 相当于内存,Flash 相当于硬盘。编译器会将一个程序分类为好几个部分,分别存储在 MCU 不同的存储区。如图所示,在Keil中编译工程成功后,在下面的Bulid Ouput窗口中会输出下面这样一段信息。

qq_40305944的博客 4578

AI全栈实战 | 3.9-01 爬虫入门:requests 加 BeautifulSoup 三分钟跑通,但 90% 的人栽在这 4 个“礼貌“问题上

⚠️:本文内容仅用于。请遵守目标站点的服务条款与相关法律法规,不得对目标服务造成负担,不得采集、传播个人隐私数据。技术是中性的,边界在你手里。爬虫的入门技术(requests 发请求 + BeautifulSoup 解析)三分钟就能学会。真正区分"会用爬虫"和"会做爬虫的人"的,是这篇我们跑通"请求→解析→存储"的最小闭环,然后重点把"合规与礼貌"这根弦给你绷上。

源码获取 | 运行部署 | 定制二开修改,如果回复不及时请耐心等待,请见谅。 411

利用Pandas进行高效网络数据获取

本文将重点介绍如何使用Pandas库进行网络爬虫。爬取数据是获取互联网上信息的常见方式之一,而Pandas作为一种强大的数据处理和分析工具,为我们提供了便捷的方法来处理和清洗从网页上获取的数据。文章将从爬取网页数据开始,包括使用Python的Requests库发送HTTP请求获取网页内容,并使用Pandas的功能来解析和提取所需的数据。我们还将讨论如何处理网页中的表格数据、处理和清洗数据、保存数据到文件等常见任务。

ak_bingbing的博客 1438

从AXI到CHI:深入解析基于Credit的流量控制如何优化NoC设计

本文深入解析了从AXI握手式流控到CHI基于Credit的流量控制机制的演进。通过对比传统流控的瓶颈,详细阐述了Credit机制如何通过信用预分配和记账系统,有效解决FIFO气泡、时序收敛等难题,从而优化NoC设计的带宽利用率、降低延迟并提升系统可扩展性。

weixin_29227585的博客 522
上一篇: 批量PDF翻译预处理提速:多进程并行提取文本实测
下一篇: 扫描版PDF做OCR预处理:DPI与灰度化参数的实测取舍
SamChan90
博客等级 码龄1年 39粉丝 109原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值