首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用节点爬虫或简单爬虫进行NodeJS网络爬行

用节点爬虫或简单爬虫进行NodeJS网络爬行
EN

Stack Overflow用户
提问于 2018-05-07 16:11:14
回答 1查看 2.3K关注 0票数 2

我是网络爬虫的新手,我需要一些关于这两个节点JS爬虫的提示。

目标:我的目标是爬行一个网站,并且只获取该域内的内部(本地)URL。我对任何网页数据或刮擦都不感兴趣。只是网址。

我的困惑是:当使用节点爬行器简写器时,它们是否必须在返回响应之前下载整个页面?有没有一种方法只找到一个URL,ping可能执行一些get请求,如果200个响应,只需继续下一个链接,而不必实际请求整个页面数据?

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

提前谢谢你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-08 09:01:52

只抓取网站的HTML页面通常是一个非常轻量级的过程。还需要下载HTML主体的响应体,以便能够爬行站点,因为HTML会被搜索到其他URL。

simplecrawler是可配置的,这样您就可以避免从网站下载图像等。这里有一个片段,您可以使用它来记录爬虫访问的URL并避免下载图像资源。

代码语言:javascript
运行
复制
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();
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50218402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档