浏览器上下文
一个强大的网络内容提取库,从网页中提取干净,可读的内容并转换为Markdown格式. 为浏览器自动化和内容处理工作流程所建.
特征
- 智能内容提取: 使用高级算法( Defuddle + Mozilla 可读性) 从网页取出主要内容
- HTML 到 Markdown 转换: 支持 GitHub Flavored Markdown (GFM) 的清洁转换
- 浏览器集成: 与 Puppeteer 和其他浏览器自动化工具无缝工作
- 退缩战略: 当初级提取失败时自动返回可读性
- 可自定义: 可配置标签去除和转换选项
安装
pnpm install @agent-infra/browser-context
使用量
基本内容提取
使用 Puppeteer 从网页中提取干净的内容 :
import { extractContent } from '@agent-infra/browser-context';
import puppeteer from 'puppeteer';
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com/article');
// Extract content as Markdown
const result = await extractContent(page);
console.log(result.title); // Article title
console.log(result.content); // Clean Markdown content
await browser.close();
手工内容提取
从 HTML 字符串中提取内容 :
import {
extractWithDefuddle,
extractWithReadability,
} from '@agent-infra/browser-context';
// Using Defuddle (primary method)
const result1 = await extractWithDefuddle(htmlString, url, {
markdown: true,
});
// Using Readability (fallback method)
const result2 = await extractWithReadability(page, {
markdown: true,
});
HTML 到 Markdown 转换
将 HTML 内容转换为 Markdown :
import { toMarkdown } from '@agent-infra/browser-context';
const html = '<h1>Title</h1><p>Content with <strong>bold</strong> text</p>';
const markdown = toMarkdown(html, {
gfmExtension: true, // Enable GitHub Flavored Markdown
codeBlockStyle: 'fenced', // Use fenced code blocks
headingStyle: 'atx', // Use # style headings
});
console.log(markdown);
// # Title
//
// Content with **bold** text
高级 HTML 到标记下选项
import {
toMarkdown,
DEFAULT_TAGS_TO_REMOVE,
} from '@agent-infra/browser-context';
const options = {
gfmExtension: true,
codeBlockStyle: 'fenced' as const,
headingStyle: 'atx' as const,
emDelimiter: '*',
strongDelimiter: '**',
removeTags: [...DEFAULT_TAGS_TO_REMOVE, 'footer', 'nav'], // Remove additional tags
};
const markdown = toMarkdown(htmlContent, options);
API 参考
extractContent(page: Page)
主要提取功能,可以先自动尝试去fuddle,再倒回可读性.
参数:
page: Puppeter 页面实例
回返情况:
Promise<{title: string, content: string}>: 已提取标题和 Markdown 内容
extractWithDefuddle(html: string, url: string, options: DefuddleOptions)
使用 Difuddle 库提取内容 .
参数:
html: HTML 内容字符串url: 页 URLoptions: 调试配置选项
extractWithReadability(page: Page, options?)
使用 Mozilla 的可读性算法提取内容 .
参数:
page: Puppeter 页面实例options.markdown: 是否转换为Markdown( 默认: 假)
toMarkdown(html: string, options?: ToMarkdownOptions)
将 HTML 转换为 Markdown 格式 .
参数:
html: HTML 内容字符串options: 转换选项
ToMarkdown 选项 :
gfmExtension: 启用 GitHub Flawared Markdown( 默认: 真)removeTags: 要删除的 HTML 标记矩阵codeBlockStyle:"缩出" :"栅"headingStyle: “ sext ” —“ atx ”emDelimiter: 强调划界符strongDelimiter: 重点划定器
内容提取战略
库采用智能双层提取策略:
- 小学: 用于准确提取内容的调试库
- 倒计时: 调试失败时的 Mozilla 可读性算法
这确保了不同网站结构的最大兼容性和提取成功.
删除了 HTML 元素
默认情况下,在Markdown转换过程中会去除以下HTML元素:
script, (中文(简体) ),style, (中文(简体) ),link, (中文(简体) ),headiframe, (中文(简体) ),video, (中文(简体) ),audio, (中文(简体) ),canvasobject, (中文(简体) ),embed, (中文(简体) ),noscriptaside, (中文(简体) ),dialog
您可以使用 removeTags 选项.
浏览器兼容性
该图书馆旨在与下列机构合作:
- 傀儡
- 剧作家
- 任何提供类似 Page 界面的浏览器自动化工具
许可证
阿帕奇许可证2.0.
贷项
特别感谢启发这一工具包的开源项目:
- 可读性 - 单独版本的可读性