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

Python中BeautifulSoup的findAll方法的JavaScript替代方案是什么?

Python脚本对应的JavaScript替代实现

你的Python代码核心是获取网页HTML并提取所有<li>元素,以下是不同JavaScript环境下的对应实现:

浏览器环境(无需第三方库)

浏览器内置fetch用于请求,DOMParser解析HTML,querySelectorAll等价于BeautifulSoup的findAll():

async function getListItems(url) {
  // 请求获取HTML文本
  const resp = await fetch(url);
  const htmlText = await resp.text();
  
  // 解析HTML为DOM文档
  const parser = new DOMParser();
  const doc = parser.parseFromString(htmlText, 'text/html');
  
  // 提取所有<li>元素(和findAll('li')功能一致)
  const items = doc.querySelectorAll('li');
  
  // 若需要操作元素内容,可遍历items
  items.forEach(item => {
    console.log(item.textContent);
  });
  
  return items;
}

Node.js环境

Node.js没有内置DOM解析能力,推荐用cheerio(语法和BeautifulSoup高度相似),或者jsdom模拟浏览器环境:

方案1:使用cheerio(最接近Python写法)

先安装依赖:

npm install cheerio

实现代码:

const cheerio = require('cheerio');
// Node.js 18+ 内置fetch,低于18版本需安装node-fetch:npm install node-fetch
const fetch = globalThis.fetch;

async function getListItems(url) {
  const resp = await fetch(url);
  const htmlText = await resp.text();
  
  // 加载HTML,类似BeautifulSoup初始化
  const $ = cheerio.load(htmlText);
  
  // 提取所有<li>元素,等价于soup.findAll('li')
  const items = $('li');
  
  // 转为数组便于操作
  const itemsArray = items.toArray();
  itemsArray.forEach(item => {
    console.log($(item).text());
  });
  
  return items;
}

方案2:使用jsdom

先安装依赖:

npm install jsdom

实现代码:

const { JSDOM } = require('jsdom');
const fetch = globalThis.fetch;

async function getListItems(url) {
  const resp = await fetch(url);
  const htmlText = await resp.text();
  
  // 创建DOM环境
  const dom = new JSDOM(htmlText);
  const doc = dom.window.document;
  
  // 提取所有<li>元素
  const items = doc.querySelectorAll('li');
  
  return items;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 04:57:09