You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:LangChain JavaScript中UnstructuredURLLoader的替代方案

替代LangChain JS中UnstructuredURLLoader的方案(解决cheerio+html-to-text冗余内容问题)

方案1:使用LangChain官方的RecursiveUrlLoader

  • 这是LangChain JS内置的URL加载器,自带HTML内容清理逻辑,能自动过滤CSS、JS代码及无关URL,直接提取页面核心文本,适配RetrievalQA场景。
  • 使用示例:
import { RecursiveUrlLoader } from "langchain/document_loaders/web/recursive_url";

const loader = new RecursiveUrlLoader("https://your-target-url.com", {
  maxDepth: 1, // 控制递归抓取深度,避免冗余页面
  extractor: async (pageContent) => {
    // 可选自定义提取逻辑,进一步优化文本质量
    const doc = new DOMParser().parseFromString(pageContent, "text/html");
    return doc.body.textContent.trim().replace(/\s+/g, " ");
  },
});

const cleanedDocs = await loader.load();

方案2:自定义基于CheerioWebBaseLoader的文本清理逻辑

  • 若偏好cheerio生态,可扩展CheerioWebBaseLoader,在加载后添加严格的过滤规则,移除CSS、JS标签及属性内容。
  • 使用示例:
import { CheerioWebBaseLoader } from "langchain/document_loaders/web/cheerio";

class CleanCheerioLoader extends CheerioWebBaseLoader {
  async load() {
    const rawDocs = await super.load();
    return rawDocs.map(doc => {
      // 清理规则:移除script/style标签、URL属性、多余空格
      const cleanedText = doc.pageContent
        .replace(/<script[^>]*>[\s\S]*?<\/script>/gi, "")
        .replace(/<style[^>]*>[\s\S]*?<\/style>/gi, "")
        .replace(/(href|src)="[^"]*"/gi, "")
        .replace(/\s+/g, " ");
      return { ...doc, pageContent: cleanedText.trim() };
    });
  }
}

const loader = new CleanCheerioLoader("https://your-target-url.com");
const cleanedDocs = await loader.load();

方案3:用PlaywrightWebBaseLoader处理动态页面

  • 针对JS渲染的动态页面,Playwright可模拟浏览器加载完整页面,提取纯文本时天然规避CSS、JS代码混入。
  • 使用示例:
import { PlaywrightWebBaseLoader } from "langchain/document_loaders/web/playwright";
import { chromium } from "playwright";

const loader = new PlaywrightWebBaseLoader("https://your-target-url.com", {
  launchOptions: { headless: true },
  async evaluate(page) {
    await page.waitForLoadState("networkidle"); // 等待页面完全加载
    return page.textContent("body").then(text => text.replace(/\s+/g, " "));
  },
});

const cleanedDocs = await loader.load();

内容的提问来源于stack exchange,提问作者Apurv JHA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 11:06:00