10个实用的node-crawler代码示例:从入门到精通

Node-crawler是一个功能强大的Node.js网络爬虫库,支持代理、异步操作、速率限制、可配置的请求池、jQuery选择器和HTTP/2协议。作为web爬虫工具,它能够帮助开发者高效地进行数据抓取和网页分析。无论你是爬虫新手还是经验丰富的开发者,这些实用的代码示例都将为你提供有价值的参考。

【免费下载链接】node-crawler Web Crawler/Spider for NodeJS + server-side jQuery ;-) 【免费下载链接】node-crawler 项目地址: https://gitcode.com/gh_mirrors/no/node-crawler

Node-crawler爬虫工具

🚀 基础爬虫配置方法

最简单的node-crawler使用方式只需要几行代码就能实现网页抓取:

import Crawler from "crawler";

const c = new Crawler({
    maxConnections: 10,
    callback: (error, res, done) => {
        if (error) {
            console.log(error);
        } else {
            const $ = res.$;
            console.log($("title").text());
        }
        done();
    },
});

c.add("http://www.amazon.com");

这个基础示例展示了如何创建一个最多10个并发连接的爬虫实例,并抓取亚马逊网站的页面标题。

📊 批量URL抓取技巧

当需要抓取多个网站时,可以一次性添加URL列表:

c.add([
    "http://www.google.com/",
    "http://www.yahoo.com",
    "http://www.bing.com"
]);

⚡ 速率限制配置指南

为了避免被目标网站封禁,合理设置速率限制至关重要:

const c = new Crawler({
    rateLimit: 1000, // 每秒最多1个请求
    callback: (err, res, done) => {
        console.log(res.$("title").text());
        done();
    },
});

🔄 自定义参数传递方案

在实际爬虫项目中,经常需要在不同请求间传递参数:

c.add({
    url: "http://www.google.com",
    userParams: {
        category: "search",
        depth: 1,
        source: "main"
    },
});

然后在回调函数中访问这些参数:

console.log(res.options.userParams);

📁 文件下载实现方法

node-crawler不仅可以抓取文本内容,还能下载图片、PDF等二进制文件:

import Crawler from "crawler";
import fs from "fs";

const c = new Crawler({
    encoding: null, // 保持原始二进制数据
    jQuery: false,
    callback: (err, res, done) => {
        if (err) {
            console.error(err.stack);
        } else {
            fs.createWriteStream("downloaded_file.png").write(res.body);
        }
        done();
    },
});

🛡️ 请求预处理技术

在发送请求前进行预处理操作:

const c = new Crawler({
    preRequest: (options, done) => {
        console.log("准备发送请求:", options.url);
        done();
    },
    callback: (err, res, done) => {
        console.log(res.statusCode);
        done();
    },
});

🌐 HTTP/2协议支持

充分利用现代网络协议的效率优势:

crawler.send({
    url: "https://nghttp2.org/httpbin/status/200",
    method: "GET",
    http2: true,
    callback: (error, response) => {
        if (error) {
            console.error(error);
        }
        console.log(response.body);
    },
});

🔄 代理轮换策略

使用多个IP地址提高爬虫的稳定性和成功率:

const IPManager = {
    index: 0,
    addresses: ["address1", "address2", "address3"],
    setAddress: function (options) {
        let address = this.addresses[this.index];
        this.index = ++this.index % this.addresses.length;
        options.address = address;
        options.rateLimiterId = Math.floor(Math.random() * 15);
    },
};

crawler.on("schedule", options => {
    IPManager.setAddress(options);
});

📈 优先级队列管理

根据任务重要性设置不同的优先级:

c.add({
    url: "http://important-site.com",
    priority: 1 // 最高优先级
});

c.add({
    url: "http://normal-site.com", 
    priority: 5 // 中等优先级
});

🎯 错误处理最佳实践

完善的错误处理机制确保爬虫的健壮性:

const c = new Crawler({
    retries: 3,
    retryInterval: 5000,
    callback: (error, res, done) => {
        if (error) {
            console.error("请求失败:", error.message);
            // 记录错误日志或采取其他恢复措施
        } else {
            // 正常处理响应
            console.log("成功获取数据");
        }
        done();
    },
});

这些实用的node-crawler代码示例涵盖了从基础配置到高级功能的各个方面。通过合理组合这些技巧,你可以构建出功能强大且稳定的网络爬虫应用。记得在实际使用中根据目标网站的具体要求调整参数设置,遵守robots.txt规则,做一名负责任的爬虫开发者!💪

核心模块参考:

掌握这些node-crawler的使用技巧,你将能够轻松应对各种网页抓取需求,无论是简单的数据采集还是复杂的分布式爬虫系统都能游刃有余。

【免费下载链接】node-crawler Web Crawler/Spider for NodeJS + server-side jQuery ;-) 【免费下载链接】node-crawler 项目地址: https://gitcode.com/gh_mirrors/no/node-crawler

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值