新闻详情

新闻详情

首页 / 资讯中心 / 详情

Crawl4AI 的表格提取策略怎么选:DefaultTableExtraction、LLMTableExtraction 与 NoTableExtraction

发布时间:2026/9/9 21:31:05来源:尧图网络
Crawl4AI 的表格提取策略怎么选:DefaultTableExtraction、LLMTableExtraction 与 NoTableExtraction
Crawl4AI 的表格提取策略怎么选DefaultTableExtraction、LLMTableExtraction 与 NoTableExtraction【免费下载链接】crawl4ai Crawl4AI: Open-source LLM Friendly Web Crawler Scraper. Dont be shy, join here: https://discord.gg/jP8KfhDhyN项目地址: https://gitcode.com/GitHub_Trending/craw/crawl4ai当你用 Crawl4AI 抓取带表格的页面时需要决定让哪个策略去处理页面上的table默认的DefaultTableExtraction基于评分规则的免费提取、LLMTableExtraction用 LLM 处理复杂合并单元格按 API 调用收费还是干脆用NoTableExtraction关闭表格提取。这套策略模式从 v0.7.3 开始提供见 表格提取文档且完全向后兼容v0.7.2 及更早版本里直接传table_score_threshold的写法继续有效内部会自动构造DefaultTableExtraction。本文给出一条可执行的选型路径先用默认策略跑通并验证result.tables确认失败后再按条件决定是否升级到 LLM 策略最后给出各策略的验证方式和常见问题处理。前提是按 安装文档 完成安装pip install crawl4ai不配置时用的是什么策略如果CrawlerRunConfig没有显式传入table_extractionCrawlerRunConfig会用table_score_threshold参数自动创建DefaultTableExtraction该逻辑可见 async_configs.py其中table_score_threshold默认为 7。也就是说最简用法不需要任何策略配置import asyncio from crawl4ai import AsyncWebCrawler, CrawlerRunConfig async def extract_tables(): async with AsyncWebCrawler() as crawler: # 未指定 table_extraction 时内部使用 DefaultTableExtraction result await crawler.arun(https://example.com/data) for table in result.tables: print(fTable with {len(table[rows])} rows and {len(table[headers])} columns) print(fHeaders: {table[headers]}) print(fFirst row: {table[rows][0] if table[rows] else No data}) asyncio.run(extract_tables())旧配置写法CrawlerRunConfig(table_score_threshold7)同样继续工作等价于DefaultTableExtraction(table_score_threshold7)。三种策略的适用条件表格提取文档 给出的策略对照如下策略说明成本什么时候用DefaultTableExtraction与 v0.7.3 之前相同的算法评分制免费文档标注 RECOMMENDED先试它覆盖 95% 的场景LLMTableExtraction用 LLM 理解复杂表格结构按 API 调用收费仅当DefaultTableExtraction处理不了复杂 rowspan/colspan 时NoTableExtraction完全关闭表格提取免费只需要文本/Markdown、不需要表格时文档给出的选型决策流程是不需要表格→ 用NoTableExtraction跳过检测与提取需要表格→ 先试免费的DefaultTableExtraction。成功就结束失败进入下一步表格是否关键且结构复杂→ 不关键就接受默认结果关键且复杂才进入第 4 步用LLMTableExtraction。小表50 行任意 LLM 提供商大表50 行用 Groq 或 Cerebras500 行时文档建议重新考虑是否分块处理页面。主路径DefaultTableExtraction 的配置与调参DefaultTableExtraction对页面里每个table打分得分达到阈值才当作数据表提取。可调参数见 table_extraction.py 的实现与文档示例table_score_threshold评分阈值默认 7。调低更宽松、调高更严格min_rows/min_cols行数/列数下限默认 0不过滤设为正数时在提取阶段直接过滤小表格verbose开启详细的提取日志。评分由哪些因素构成文档中列出的规则帮助你判断阈值调多少因素分值说明有thead2语义化的表头结构有tbody1规范的表体有th元素2存在表头单元格表头位置正确1语义结构正确列数一致2规整的数据结构有 caption2描述性标题有 summary1summary 属性文本密度高2 到 3单元格内容充实data-* 属性每个 0.5数据属性嵌套表格-3通常是布局表rolepresentation-3显式标记为非数据表行数太少-2数据不足一个可直接运行的示例来自 示例脚本它抓取维基百科的 GDP 列表页并转成 pandas DataFrame 预览import asyncio import pandas as pd from crawl4ai import AsyncWebCrawler, CrawlerRunConfig, CacheMode async def example_default_extraction(): async with AsyncWebCrawler() as crawler: config CrawlerRunConfig( cache_modeCacheMode.BYPASS, table_score_threshold7 # 默认值 7可调低以提高检出率 ) result await crawler.arun( https://en.wikipedia.org/wiki/List_of_countries_by_GDP_(nominal), configconfig ) if result.success and result.tables: print(fFound {len(result.tables)} tables) first_table result.tables[0] df pd.DataFrame( first_table[rows], columnsfirst_table[headers] if first_table[headers] else None ) print(df.head()) print(fShape: {df.shape}) asyncio.run(example_default_extraction())需要按尺寸过滤表格时把过滤放在提取阶段而不是事后from crawl4ai import DefaultTableExtraction, CrawlerRunConfig strategy DefaultTableExtraction( table_score_threshold5, # 更低阈值 更宽松 min_rows3, # 至少 3 行 min_cols2, # 至少 2 列 verboseTrue ) config CrawlerRunConfig( table_extractionstrategy, css_selectorarticle.content # 限定处理范围 )css_selector同时用于缩小处理范围文档的性能建议是把css_selector指向主内容区如article.main-content配合excluded_tags[nav, aside, footer]排除导航和侧边栏并对重复抓取开启缓存。确认 Default 失败后LLMTableExtraction 的配置LLMTableExtraction只在满足以下条件时启用表格有复杂的合并单元格rowspan/colspan、嵌套表格或不规则结构且你已经试过DefaultTableExtraction并确认失败。文档明确警告它按 API 调用收费、大表100 行可能很慢不要默认使用。文档给出的配置示例api_token需替换为你自己的密钥from crawl4ai import LLMTableExtraction, LLMConfig, CrawlerRunConfig llm_config LLMConfig( providergroq/llama-3.3-70b-versatile, # 文档示例大表推荐的快速提供商 api_tokenyour_api_key, # 替换为你的 API 密钥 temperature0.1 ) table_strategy LLMTableExtraction( llm_configllm_config, max_tries3, # 提取失败时最多重试 3 次 css_selectortable, # 可选聚焦特定表格 enable_chunkingTrue, # 自动分块大表默认 True chunk_token_threshold3000, # 超过 3000 token 时切分默认 3000 min_rows_per_chunk10, # 每个分块最少行数默认 10 max_parallel_chunks5, # 最多并行处理 5 个分块默认 5 verboseTrue ) config CrawlerRunConfig( table_extractiontable_strategy ) result await crawler.arun(url, config) # url 为你的目标页面地址两点需要知道如果不传llm_config源码 会回退到环境变量DEFAULT_PROVIDER缺省openai/gpt-4o-mini和OPENAI_API_KEY即默认走 OpenAI调用即计费。大表的分块处理是透明的超过chunk_token_threshold的表格会按行边界自动切分每个分块保留原表头分块并行处理后合并回单个表格。文档给出的提供商建议小表50 行任意提供商中表50-200 行Groq、Cerebras大表200 行Groq最佳、Cerebras超大表500 行Groq 加分块并行处理。分块合并成功后返回的表格metadata中会带chunked: True和chunk_count见 table_extraction.py 中_merge_chunk_results可以据此确认该表确实走了分块路径。不需要表格时NoTableExtraction 与验证只关心文本/Markdown 时显式关闭表格提取可以省掉检测和提取的开销迁移指南 称之为不消耗 CPU cyclesfrom crawl4ai import NoTableExtraction, CrawlerRunConfig config CrawlerRunConfig( table_extractionNoTableExtraction() ) result await crawler.arun(url, config) assert len(result.tables) 0 # 验证不应再有任何表格验证提取结果各策略提取的表格结构一致每个表格是一个字典LLM 策略的 metadata 额外含has_merged_cells、nested_tables、table_type字段{ headers: [Column 1, Column 2], # 列标题 rows: [[Row 1 Col 1, Row 1 Col 2]], # 数据行 caption: Table Caption, # 如有 summary: Table Summary, # 如有 metadata: { row_count: 10, column_count: 2, has_headers: True, has_caption: True, has_summary: False # 有 id / class 属性时还会出现 id、class 键 } }判断提取质量文档给了一个校验函数示例示例中的 50% 非空单元格比例是文档给出的示例阈值可按需调整def validate_table(table): Validate table data quality. if not table.get(rows): return False if table.get(headers): expected_cols len(table[headers]) for row in table[rows]: if len(row) ! expected_cols: return False total_cells sum(len(row) for row in table[rows]) non_empty sum(1 for row in table[rows] for cell in row if cell.strip()) if non_empty / total_cells 0.5: return False return True valid_tables [t for t in result.tables if validate_table(t)]如果你是从 v0.7.2 升级到 v0.7.3迁移指南 提供了一个验证脚本对同一 URL 分别用旧的table_score_threshold7配置和新的DefaultTableExtraction(table_score_threshold7)配置各跑一次断言两者提取的表格数量相同、headers与rows内容一致。脚本中的url your_url_here需要替换为你要验证的目标 URL。常见问题处理文档的 Troubleshooting 一节给出的对照表基本覆盖了选型后的常见偏差现象原因处理没有提取到表格评分阈值过高调低table_score_threshold布局表格被提取进来评分阈值过低调高table_score_threshold目标表格缺失css_selector太窄放宽或去掉css_selector数据不完整表格结构复杂考虑LLMTableExtraction或自定义策略性能问题处理整页用css_selector限定范围排查提取决策过程时给策略加上verboseTrue并配置logging.basicConfig(levellogging.DEBUG)即可看到每个表格的评分与取舍日志。最后两点限制需要注意LLMTableExtraction每次调用都有费用批量页面抓取时成本会累积文档明确反对在未确认 Default 失败前启用它另外文档提到一个免费的复杂表格rowspan/colspan/嵌套非 LLM 算法正在开发中未来可能减少对 LLM 提取的依赖选型时可留意后续版本说明。完整的策略说明见 docs/md_v2/core/table_extraction.md可运行示例见 docs/examples/table_extraction_example.py。【免费下载链接】crawl4ai Crawl4AI: Open-source LLM Friendly Web Crawler Scraper. Dont be shy, join here: https://discord.gg/jP8KfhDhyN项目地址: https://gitcode.com/GitHub_Trending/craw/crawl4ai创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

平衡谱特征选择:解决高维数据冗余特征问题的新思路 2026/9/9 22:10:19

平衡谱特征选择:解决高维数据冗余特征问题的新思路

做特征选择这件事,很多人刚上手时都是跑一遍方差过滤、卡方检验或者互信息排名,然后直接把top k特征丢给模型。这套流程对付几百维的数据还凑合,一旦上了基因表达谱、文本TF-IDF或者图像特征这种动辄上万维的场景,就会遇到一个很现…

阅读更多 →
SQLark连接达梦数据库实战指南:从安装配置到信创迁移 2026/9/9 22:10:19

SQLark连接达梦数据库实战指南:从安装配置到信创迁移

1. 项目背景与整体思路拆解1.1 为什么选择SQLark来连接达梦数据库先说说背景。这两年“国产信创”这三个字已经从趋势变成了日常,尤其在政企、金融、能源这些行业,数据库从Oracle、MySQL换成达梦数据库是很常见的动作。我接触达梦的时候,第一…

阅读更多 →
软件测试用例设计四方法:等价类、边界值、场景法、因果图实战解析 2026/9/9 22:10:19

软件测试用例设计四方法:等价类、边界值、场景法、因果图实战解析

1. 先把话说清楚:这四个方法不是“四选一”,是同一场测试的四个切面经常有测试同学问我:等价类、边界值、场景法、因果图,面试题背得滚瓜烂熟,一上手写用例就不知道用哪个。还有些人喜欢问“这四种方法哪个最好”&…

阅读更多 →
Marlin固件STM32F407VE风扇PWM异常?3D打印主板4步定位修复法 2026/9/9 22:10:19

Marlin固件STM32F407VE风扇PWM异常?3D打印主板4步定位修复法

Marlin固件STM32F407VE风扇PWM异常?3D打印主板4步定位修复法 【免费下载链接】Marlin Marlin is a firmware for RepRap 3D printers optimized for both 8 and 32 bit microcontrollers. Marlin supports all common platforms. Many commercial 3D printers come …

阅读更多 →
开源工具Factory-translator:工厂体系文件翻译的版式与术语难题 2026/9/9 22:10:19

开源工具Factory-translator:工厂体系文件翻译的版式与术语难题

前两年我一直在帮制造企业做供应链转移项目,从华东搬到中西部,从国内体系搬到海外工厂,最头疼的往往不是设备搬运、不是产线调试,而是那一摞摞的体系文件。质量手册、程序文件、作业指导书、FMEA、控制计划,统统要跟着…

阅读更多 →
5分钟跑通UI+接口自动化测试闭环 2026/9/9 22:07:18

5分钟跑通UI+接口自动化测试闭环

1. 项目概述:这不是“点几下就跑通”的玩具,而是能立刻嵌入你日常测试流程的最小可行闭环“自动化测试实战:5分钟实现从0到跑通全流程”——这个标题里藏着三个关键信号:实战、5分钟、全流程。它不是教你怎么搭一个炫酷但没人用的…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞