Node.js如何实现爬虫程序?

来源:AI教程网作者:小鱼头衔:草根站长
导读:本期聚焦于小伙伴创作的《Node.js如何实现爬虫程序?》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《Node.js如何实现爬虫程序?》有用,将其分享出去将是对创作者最好的鼓励。

Node.js实现爬虫程序的核心逻辑是通过发送网络请求获取目标页面的HTML内容,再解析页面结构提取需要的数据,整个过程可以拆分为请求发送、页面解析、数据处理三个核心步骤,下面逐步介绍具体实现方法。

Node.js如何实现爬虫程序?

一、准备所需依赖库

实现Node.js爬虫不需要从零封装网络请求和解析逻辑,常用的两个核心库可以大幅降低开发成本:

  • axios:用于发送HTTP请求,支持Promise语法,使用简单,能快速获取目标页面的响应内容。
  • cheerio:可以像使用jQuery一样解析HTML字符串,提供便捷的选择器语法来提取页面中的数据。

首先初始化Node.js项目并安装这两个依赖:

# 初始化项目
npm init -y
# 安装依赖
npm install axios cheerio

二、发送请求获取页面内容

使用axios发送GET请求到目标页面,获取返回的HTML字符串,需要注意部分网站会有反爬机制,可能需要设置请求头模拟浏览器访问。

const axios = require('axios');

// 目标页面地址,这里以示例站点为例
const targetUrl = 'https://ipipp.com/demo';

// 发送请求获取页面内容
async function fetchPage(url) {
  try {
    const response = await axios.get(url, {
      headers: {
        // 模拟浏览器请求头,降低被反爬拦截的概率
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
      }
    });
    return response.data;
  } catch (error) {
    console.error('请求页面失败:', error.message);
    return null;
  }
}

三、解析页面提取数据

拿到HTML字符串后,使用cheerio加载内容,通过CSS选择器定位到需要的数据节点,提取对应的文本或属性值。

const cheerio = require('cheerio');

// 解析页面提取数据
function parsePage(html) {
  if (!html) return [];
  // 加载HTML内容
  const $ = cheerio.load(html);
  const result = [];
  // 假设目标数据在class为item的div元素中,每个item包含标题和链接
  $('.item').each((index, element) => {
    const title = $(element).find('.title').text().trim();
    const link = $(element).find('a').attr('href');
    if (title && link) {
      result.push({
        title,
        link
      });
    }
  });
  return result;
}

四、完整爬虫示例

把上面的步骤组合起来,就可以得到一个完整的可运行爬虫程序,运行后会输出提取到的数据。

const axios = require('axios');
const cheerio = require('cheerio');

const targetUrl = 'https://ipipp.com/demo';

async function fetchPage(url) {
  try {
    const response = await axios.get(url, {
      headers: {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
      }
    });
    return response.data;
  } catch (error) {
    console.error('请求页面失败:', error.message);
    return null;
  }
}

function parsePage(html) {
  if (!html) return [];
  const $ = cheerio.load(html);
  const result = [];
  $('.item').each((index, element) => {
    const title = $(element).find('.title').text().trim();
    const link = $(element).find('a').attr('href');
    if (title && link) {
      result.push({
        title,
        link
      });
    }
  });
  return result;
}

// 执行爬虫
async function runCrawler() {
  const html = await fetchPage(targetUrl);
  const data = parsePage(html);
  console.log('提取到的数据:', data);
}

runCrawler();

五、注意事项

开发爬虫程序时需要遵守相关规范,避免带来不必要的风险:

  • 遵守目标网站的robots.txt协议,不要抓取禁止访问的内容。
  • 控制请求频率,避免短时间内发送大量请求给目标服务器造成压力。
  • 不要抓取涉及隐私、版权的内容,仅用于合法的学习和测试场景。
  • 如果目标页面是动态渲染的,普通请求无法获取完整内容,需要结合puppeteer等无头浏览器工具实现。

以上就是Node.js实现爬虫程序的完整流程,开发者可以根据实际需求调整选择器和请求逻辑,适配不同的目标站点。

Node.js爬虫cheerioaxios数据抓取修改时间:2026-06-05 02:29:03

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。