UNPKG

shrink-dom

Version:

适用于网页分析、内容提取、AI训练数据准备和网页爬虫等场景,帮助开发者更高效地处理和优化DOM结构。

76 lines (75 loc) 2.25 kB
import type { ExtractorOptions } from './types'; /** * 内容提取器类,用于从DOM中提取关键内容 */ export declare class DOMContentExtractor { /** * 默认值常量 */ static readonly FORM_ELEMENT_TAGS: string[]; static readonly PRESERVED_ATTRIBUTES: string[]; static readonly EMPHASIS_TAGS: string[]; static readonly BRIEF_TEXT_THRESHOLD = 200; static readonly SKIP_KEYWORDS: string[]; private jsdomInstance; private documentNode; private readonly nodeType; private readonly formElementTags; private readonly preservedAttributes; private readonly preservedAttributesSet; private readonly emphasisTags; private readonly skipKeywords; /** * 创建内容提取器实例 * @param options 配置选项 */ constructor(options?: ExtractorOptions); /** * 提取简化的DOM内容 * @param element 需要处理的DOM节点 * @returns 提取后的DOM节点或null */ extract(element: ChildNode): ChildNode | null; /** * 检查提取的内容是否有意义 * @param element 提取后的DOM节点 * @returns 是否有意义 */ isContentMeaningful(element: ChildNode): boolean; /** * 转换DOM节点 * @param element 需要处理的DOM节点 * @returns 处理后的DOM节点或null * @private */ private transformNode; private isTextNode; private isElementNode; private shouldSkipBasedOnTag; private isAdvertisement; private processChildNodes; private shouldKeepElement; private createContainerWithAttributes; /** * 检测节点是否应该被跳过 * @param element HTML元素 * @returns 是否应该被跳过 * @private */ private shouldSkipElement; /** * 获取元素的直接文本内容(不包括子元素的文本) * @param element HTML元素 * @returns 直接文本内容 * @private */ private getDirectTextContent; /** * 检查文本是否包含关键词列表中的任一关键词 * @param text 要检查的文本 * @param keywords 关键词列表 * @returns 是否包含关键词 * @private */ private containsAnyKeyword; }