shrink-dom
Version:
适用于网页分析、内容提取、AI训练数据准备和网页爬虫等场景,帮助开发者更高效地处理和优化DOM结构。
76 lines (75 loc) • 2.25 kB
TypeScript
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;
}