news 2026/7/22 11:34:06

最小可运行示例:网页正文提取API的curl调用与字段解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
最小可运行示例:网页正文提取API的curl调用与字段解析

适用场景

在日常开发中,经常需要从新闻、博客、公众号等网页中提取主体正文,丢弃多余的导航栏、侧栏广告、评论区域等干扰信息。手动解析HTML不仅繁琐,而且难以应对不同站点的模板差异。网页正文提取API基于文本密度算法,只需传入一个URL即可获得结构化的正文内容,适用于内容聚合、信息采集、阅读辅助等场景。

接口能力边界

  • 输入:一个有效的网页URL(必须包含协议头,如https://
  • 输出:JSON格式,包含标题、纯文本正文、图片列表、发布时间、字数统计、预估阅读时长
  • 算法说明:内部采用文本密度与行块分布算法,自动识别文章主体区域,对多数主流资讯类站点有较好提取效果
  • QPS限制:5次/秒,超过限制会返回429错误
  • 数据更新:接口不缓存结果,每次请求实时抓取并解析目标页面

鉴权与请求参数

参数位置类型必填说明
X-API-KeyHeaderstring开发者密钥,需在平台申请获取
urlQuerystring目标网页的完整URL,需进行URL编码

请求方法固定为GET,无其他请求体。

最小可运行示例:curl

以下是一个可以直接运行的curl命令,将YOUR_API_KEY替换为实际密钥,url替换为待提取的网页地址即可:

curl -sS \ -X GET \ -H "X-API-Key: YOUR_API_KEY" \ "https://v1.apizero.cn/api/content-extract?url=https://apizero.cn"

参数说明

  • -sS-s静默模式不显示进度,-S保留错误输出便于调试
  • -X GET:明确指定请求方法(可选,默认即为GET)
  • -H:添加请求头,传递API密钥
  • url参数直接拼接在query中,若目标URL含有特殊字符(如中文、&符号),需先进行URL编码(可使用--data-urlencode的变通方式,但GET请求下更推荐手动编码或使用jq等工具)

检查结果:成功返回的HTTP状态码为200,响应体为JSON数组(包装在根层级,实际为对象)。若出现401错误,请检查API Key是否正确;若出现400错误,请检查url参数是否缺失或无效。

代码接入:Python示例

除了curl,在真实工程中通常使用编程语言封装。以下是Python基于requests库的调用示例:

import requests import json API_KEY = "your_api_key_here" # 替换为实际的密钥 BASE_URL = "https://v1.apizero.cn/api/content-extract" target_url = "https://apizero.cn" # 替换为目标网页 headers = {"X-API-Key": API_KEY} params = {"url": target_url} try: resp = requests.get(BASE_URL, params=params, headers=headers, timeout=10) resp.raise_for_status() # 非2xx状态码抛出异常 data = resp.json() print(json.dumps(data, indent=2, ensure_ascii=False)) except requests.exceptions.RequestException as e: print(f"请求异常: {e}") except json.JSONDecodeError: print("响应非JSON格式,请检查URL有效性")

注意事项

  • 务必设置超时(timeout),避免请求长时间挂起
  • 建议捕获requests.exceptions.RequestException覆盖所有网络与HTTP错误
  • 对于含中文的URL,requests库会自动编码,无需手动处理

返回值解读

成功响应示例(已省略长文本):

{ "code": 0, "msg": "成功", "data": { "title": "示例文章标题", "content": "正文文本,可能包含换行和多个段落...", "word_count": 2300, "reading_time": "5分钟", "publish_time": "2024-01-15", "images": [ "https://example.com/image1.jpg", "https://example.com/image2.png" ], "image_count": 2 } }

字段说明

字段类型说明
codeint业务状态码,0表示成功,非0表示错误
msgstring描述信息,成功为"成功",错误时携带错误原因
data.titlestring提取的文章标题,可能为空字符串
data.contentstring正文纯文本,已去除HTML标签和广告模块
data.word_countint正文中文与英文单词总计(汉字按字符计)
data.reading_timestring基于字数估算的阅读时长,中文按每分钟300-400字
data.publish_timestring文章发布时间,格式为YYYY-MM-DD,若无法提取则为空
data.imagesarray文章中出现的图片URL列表,不含图或表情包
data.image_countint图片数量

注意content字段可能非常长(例如超1万字),若用于存储需考虑字符串长度限制;publish_time依赖页面结构化数据,部分网站可能无法准确获取。

常见错误与排查

HTTP状态码业务code可能原因处理方式
40010001缺少url参数或URL格式不合法检查请求参数,确保URL包含协议头
40110002API Key 无效、过期或未在Header中传递核对X-API-Key的值是否与平台上一致
40410003目标网页访问不到(404或DNS解析失败)确认目标URL可访问,检查网络环境
42910004超过QPS限制(5次/秒)降低请求频率,加入重试退避策略
50020001服务器内部错误,可能是目标页面解析异常稍后重试,若持续出现可联系技术支持
-20002目标网页非HTML(如PDF、图片)仅支持HTML页面,检查URL指向的资源类型

调试建议:开启curl的-v参数查看详细HTTP交互;在代码中加入日志记录响应头与响应体前200字节以快速定位问题。

工程化注意事项

  1. 缓存策略:对同一URL的提取结果可缓存一定时间(如10-30分钟),避免重复请求造成资源浪费和触发QPS限制。
  2. 内容存储content字段可能包含换行符和特殊符号,存入数据库时需做好转义;若用于展示,可保留原始换行但注意XSS风险。
  3. URL标准化:在传入前做简单的URL规范化(如补全协议、去除尾随斜杠),减少因格式不一导致的重复请求。
  4. 并发控制:若需要批量提取,建议使用信号量或队列控制并发数不超过5,并使用指数退避处理429错误。
  5. Robots协议尊重:虽然本API不存储数据,但仍建议遵守目标网站的robots.txt规则,避免法律风险。
  6. 错误处理:对于publish_time为空的场景,可降级使用当前时间或留空;对于image_count为0的情况,确保前端组件能正常展示无图状态。

参考文档

  • 网页正文提取API文档
  • 原始Markdown文档
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/22 11:32:45

助贷CRM系统数据脱敏与权限管控实战方案

前言助贷业务依托CRM系统完成客户引流、资质审核、业务跟进、台账管理全流程运作,系统沉淀了大量客户基础信息、业务资料、流程数据等核心敏感数据。这类数据具备高隐私性、高关联性、高泄露风险三大特征,一旦出现数据越权访问、明文泄露、违规导出等问题…

作者头像 李华
网站建设 2026/7/22 11:31:51

产品信息:百度地图

基础信息 产品全称:百度地图(Baidu Maps)别名/代号:百度地图App、百度地图开放平台核心关键词:地图、导航、LBS、实时路况、位置服务、出行、地图API、车道级导航产品定位:中国领先的数字地图和智能导航服务…

作者头像 李华
网站建设 2026/7/22 11:27:54

GPT-5.6 实战记录:用真实项目代码测试分析、修改与调试能力

过去大半年我一直在折腾大模型集成方案——从自研搭建多模型聚合系统,到部署开源UI,再到试用第三方API聚合平台,每条路都走过一遍。期间用GPT-5.6、Claude、Gemini、Grok在真实项目上跑了大量实测,积累了不少一手数据。今天不聊理…

作者头像 李华
网站建设 2026/7/22 11:27:38

Solidity智能合约开发:从入门到实战

1. 为什么选择Solidity作为智能合约开发语言 当我在2017年第一次接触区块链开发时,面对众多智能合约语言选项曾一度犹豫不决。经过多次实践验证,Solidity最终成为我的首选,这背后有几个关键因素值得深入探讨。 Solidity作为专为以太坊虚拟机…

作者头像 李华
网站建设 2026/7/22 11:27:29

阿里云百炼HappyOyster 1.0:自然语言生成3D交互场景开发指南

在 AI 应用开发领域,快速集成大模型能力并构建交互式数字场景一直是开发者面临的实际挑战。阿里云百炼平台近期上线的 HappyOyster 1.0 服务,提供了一种通过自然语言描述直接生成可交互 AI 数字世界的新范式。这项服务不仅降低了 3D 场景构建的技术门槛&…

作者头像 李华