中央的文章页面与菜单、评论和页脚卡片分开。
检查提取结果保留了什么、去掉了什么。

HTML 是已保存的页面标记。库是读者另行安装的代码。散列是用于识别这一份已保存副本的文件指纹。None 或空输出表示提取不可用。获取到的输入、正文和提取状态必须分开;登录页、验证挑战或 HTML 外壳不是已取得的正文,而且没有测试渲染或隐藏访问。

检查从网页提取的正文

  1. 先确定代理需要页面中的哪些内容,以及哪些页面区域不在该需求之内。此方法针对的是提取质量。
  2. 如果需要发现候选 URL,使用公开的 Google Search Scraper build 1.0.15 Actor 与一个 Task。用一个预定的搜索短语替换已保存的整组三查询样本,设置为 `queries` ["one intended phrase"]、`engines` ["bing"]、`maxResultsPerExecutedQuery` 2、`country` "US"、`language` "en"、`safeSearch` true 和 `includeSponsoredResults` false。原生搜索候选字段包括 `engine`、`executedQuery`、`canonicalUrl`、`resultDomain`、`snippet`、`rank`、`page` 和 `observedAt`。输出汇总记录包括 `queriesRequested`、`searchesCompiled`、`executionsPlanned`、`enginesRequested`、`enginesSuccessful`、`enginesFailed`、`pagesAttempted`、`pagesParsed`、`candidatesSeen`、`resultsSaved`、`engineStatusCounts`、`queryResultCounts` 和 `stopReason`。当前的两行 Bing 对照返回了直接的 docs.python.org 候选 URL,并带有查询、排名 1 和 2、第 1 页和观察时间,外加一个已解析页面以及 stopReason `result_caps_reached`。它只验证范围有限的候选结果,不验证目标页面获取、文本提取,也不验证其他引擎或市场。此处只有 Bing 有已通过验收检查的引擎证据。
  3. 另行获取允许访问的目标页面,并保留其最终 URL、获取时间、内容类型和源 HTML。该搜索 Actor 不执行这次获取。请确认已保存的输入确实包含预定的文章文本。`fetch_failure`、`body_not_in_saved_html` 和 `extraction_unavailable` 必须分开。
  4. 在已记录的版本和选项下,对这份已保存的 HTML 单独运行文本提取库。原来的本地 HTML 源测试样本使用已安装的 2.0.0 版本,以 `trafilatura.extract(html, include_comments=False)` 做了测试。请注意,当前文档描述的是 2.3.1 版本,因此这些版本事实必须分开保留。
  5. 在接受输出之前,先定义几项源检查:必需的标题或段落、否定或条件、带单位的数字,以及应排除的导航、页脚或评论。对照已保存的 HTML 和返回的文本。丢掉单位或缺少否定,都可能使含义反过来。
  6. 将每项检查记为 retained、changed、missing、unwanted_noise_present 或 cannot_resolve,并附上确切的源定位和提取出的段落。仅在有用时统计已检查的事实。
  7. 如果关键检查未通过,应复查已保存的 HTML 和提取设置,而不是把损坏的文本交给代理。
  8. 保存一份精简的提取记录:源 URL 和获取上下文、HTML 引用或散列、提取器版本和选项、输出引用、检查表以及决定。

原始的虚构完整已保存 HTML 源测试样本:“虚构托盘指南”的已保存 HTML 含有导航、登录和页脚区块、一篇文章以及评论区。文章写道:“在托盘水平之前不要加水”以及“此虚构演示使用 12 毫升水。”评论和菜单包含无关词语。此源测试样本没有实时获取任何目标页面。

检查从网页提取的正文
检查项已保存的 HTML 内容提取的文本输出状态
必需标题虚构托盘指南虚构托盘指南已保留
否定 / 条件在托盘水平之前不要加水在托盘水平之前不要加水已保留
数字和单位12 毫升12 毫升已保留
导航标记NavigationMarker未出现读者建立的检查:不需要的噪声未出现
页脚标记FooterMarker未出现读者建立的检查:不需要的噪声未出现
评论标记CommentsMarker未出现读者建立的检查:不需要的噪声未出现

已安装的 2.0.0 版本提取器调用产生了非空正文。像“加水。使用 12”这样的假设输出会使两项检查不通过,因为必需的否定和条件被改变,而且数字的单位缺失。假设的空输出应标为 `extraction_unavailable`,而不是一篇事实条数为 0 的文章。

来源和延伸阅读

作者 Chronometrica · 更新日期

返回顶部 ↑