gpt4 book ai didi

node.js - NodeJS 使用 node-crawler 或 simplecrawler 进行 Web 爬行

转载 作者:太空宇宙 更新时间:2023-11-03 23:00:13 30 4
gpt4 key购买 nike

我是网络爬虫新手,我需要一些关于这两个 Node JS 爬虫的指导。

目标:我的目标是抓取网站并仅获取该域内的内部(本地)URL。我对任何页面数据或抓取不感兴趣。只是 URL。

我的困惑:使用 node-crawler 时或simplecrawler ,他们是否必须在返回响应之前下载整个页面?有没有办法只找到一个 URL,ping 可能会执行一些获取请求,如果收到 200 响应,则只需继续下一个链接,而无需实际请求整个页面数据?

是否还有其他 NodeJS 爬虫或蜘蛛可以仅请求和记录 URL?我关心的是使爬行尽可能轻量。

提前谢谢您。

最佳答案

仅抓取网站的 HTML 页面通常是一个非常轻量级的过程。还需要下载 HTML 主体的响应主体才能抓取网站,因为会在 HTML 中搜索其他 URL。

simplecrawler 是可配置的,这样您就可以避免从网站下载图像等。下面是一个代码片段,您可以使用它来记录抓取工具访问的 URL,并避免下载图像资源。

var Crawler = require("simplecrawler");
var moment = require("moment");
var cheerio = require("cheerio");

var crawler = new Crawler("http://example.com");

function log() {
var time = moment().format("HH:mm:ss");
var args = Array.from(arguments);

args.unshift(time);
console.log.apply(console, args);
}

crawler.downloadUnsupported = false;
crawler.decodeResponses = true;

crawler.addFetchCondition(function(queueItem) {
return !queueItem.path.match(/\.(zip|jpe?g|png|mp4|gif)$/i);
});

crawler.on("crawlstart", function() {
log("crawlstart");
});

crawler.on("fetchcomplete", function(queueItem, responseBuffer) {
log("fetchcomplete", queueItem.url);
});

crawler.on("fetch404", function(queueItem, response) {
log("fetch404", queueItem.url, response.statusCode);
});

crawler.on("fetcherror", function(queueItem, response) {
log("fetcherror", queueItem.url, response.statusCode);
});

crawler.on("complete", function() {
log("complete");
});

crawler.start();

关于node.js - NodeJS 使用 node-crawler 或 simplecrawler 进行 Web 爬行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50218402/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com