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

2023年提取网页用户可读纯文本的最佳方法探讨

2023年提取网页用户可读纯文本的实用方案

针对你提到的两个问题,直接给你实用的解决思路:

问题1:curl无法获取JS渲染的文本怎么办?

curl只能抓取静态HTML,现在大量站点用React/Vue这类框架做客户端渲染,纯curl根本拿不到实际展示的内容。2023年主流的替代方案是用支持JS渲染的无头浏览器工具,比如Playwright或者Puppeteer——这俩都是活跃维护的工具,比已经停止更新的Phantomjs靠谱多了。它们能模拟真实浏览器加载页面,等待JS执行完成后再获取完整的渲染内容。

问题2:怎么只提取核心文本,忽略广告、导航这类无关内容?

别直接提取整个页面的文本,而是用以下两种思路精准定位核心内容:

  • 利用页面结构选择器:大部分正规内容站点的文章主体都会有统一的类名或ID,比如.article-content、#post-body,用无头浏览器的DOM选择器定位到这个元素后,直接提取它的textContent就行。
  • 用专门的内容提取库:最推荐Mozilla的Readability库,它能自动分析网页结构,识别出主要的文章内容,过滤掉侧边栏、广告、导航等冗余元素。可以把它和无头浏览器结合用,在页面加载完成后,在浏览器环境里运行Readability,直接拿到整理好的纯文本内容。

举个简单的Playwright+Readability的代码示例:

const { chromium } = require('playwright');
const { Readability } = require('@mozilla/readability');

async function getArticleText(url) {
  const browser = await chromium.launch({ headless: true });
  const page = await browser.newPage();
  // 等待页面完全加载,包括JS执行
  await page.goto(url, { waitUntil: 'networkidle' });
  
  // 在浏览器环境中用Readability提取核心内容
  const result = await page.evaluate(() => {
    const reader = new Readability(document.cloneNode(true));
    const article = reader.parse();
    return article.textContent;
  });

  console.log(result);
  await browser.close();
}

// 调用示例
getArticleText('https://people.com/books/jay-shetty-announces-new-book-8-rules-of-love/');

另外,如果是静态站点,也可以用curl配合pup(一个命令行HTML解析工具),通过选择器提取指定元素的文本,但这种方式只适用于不需要JS渲染的页面。

内容的提问来源于stack exchange,提问作者Andrew Arrow

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 11:57:30