Снипеты для Node.js

Простые примеры кода на node.js

Взять с github

Запросить страницу и распарсить

Приминяются модули request и cheerio:

let request = require('request');
let cheerio = require('cheerio')

var url = "https://yandex.ru/images/search?text=%D0%BE%D1%82%D0%BF%D1%83%D1%81%D0%BA&nl=1"
request(url, function(error, response, body) {
    if (error) {
        console.error("Ошибка", error);
        return;
    }

    var $ = cheerio.load(body);
    var res = $(".serp-item__thumb");

    // console.log(res);
    for (var i = 0, len = res.length; i < len; i++) {
        let s = res[i].attribs.src;
        console.log(s);
    }
});

Загрузка нескольких изображений. Обработка окончания загрузки

Приминяются модули request и bluebird.
Bluebird применяется если ваша версия node не поддерживает Promise

// let Promise = require("bluebird");
let request = require("request");
let fs = require("fs");
let path = require("path");

let pathImg = 'download';
let imgList = [
    'http://www.banksy.co.uk/img/0116/pmbg_01-3.jpg',
    'http://www.banksy.co.uk/img/indoorimg/flag.jpg',
    'http://www.banksy.co.uk/img/indoorimg/media.jpg',
    'http://www.banksy.co.uk/img/outdoorimg/mi_02.2_O.jpg',
    'http://www.banksy.co.uk/img/outdoorimg/jobs_01-8.jpg'
];

let promiseArr = [];

for (var i = 0, len = imgList.length; i < len; i++) {
    let uri = imgList[i];
    let filename = pathImg + '/' + path.parse(uri).base;

    var promis = new Promise(function(resolve, reject) {
        request.head(uri, function(err, res, body) {
            if (res.statusCode == 200) {
                console.log(res.headers['content-type'], filename);
                request(uri).pipe(fs.createWriteStream(filename)).on('close', function(d) {
                    resolve(); // Проблема
                });
            } else {
                console.log(res.statusCode, filename);
                reject();
            }
        });
    });

    promiseArr.push(promis);
}

fs.mkdir(pathImg, function(e) {
    Promise.all(promiseArr).then(function(d) {
        console.log('success download!'); // Если весь список скачался успешно
    }, function(err) {
        console.log('error');
    });
});

Простейший http сервер

var http = require("http");
var url = require("url");
var fs = require("fs");

// настройки
var settings = {
    content: __dirname + "/web/"
};

var server = http.createServer(function(request, response) {
    console.log(request.method, request.url);
    var path = url.parse(request.url).pathname;
    var loadFile = (path == '/') ? 'index.html' : path

    fs.readFile(settings.content + loadFile, function(error, data) {
        if (error) {
            console.log("error: " + error);
            response.writeHead(404);
            response.write("404 - not found");
        } else {
            response.writeHead(200, { "Content-Type": "text/html" });
            response.write(data);
        }

        response.end();
    });
});

server.listen(8080);
console.log("Server is listening localhost:8080");

Для тестирования приложения (и перезапуска при изменение кода) можно воспользоватся supervisor.

npm install supervisor -g
supervisor app.js

Прочитать текстовый файл

let fs = require('fs');
let fileName = "package.json";

fs.readFile(fileName, "utf-8", function(err, data) {
    if (err) {
        if (err.code == 'ENOENT') {
            console.log("No such file or directory");
        } else {
            console.log("error", err);
        }

        return;
    };

    console.log(data);
});

Создаем новый текстовый файл или перезаписывает существующий

let fs = require('fs');
let fileName = 'test.txt';
let data = 'Is test file';

fs.writeFile(fileName, data, function(err) {
    if (err) {
        console.log('error', err);
        return;
    }

    console.log('It\'s saved!');
});

Дописать в конец файла строку

let fs = require('fs');
let fileName = 'test.txt';
let data = 'data to append';

fs.appendFile(fileName, 'data to append', function(err) {
    if (err) {
        console.log('error', err);
    } else {
        console.log('ok');
    }
});

http://caolan.github.io/async/index.html

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *