How can I replicate the functionality of a wget with node.js?

后端 未结 5 1838
我寻月下人不归
我寻月下人不归 2021-02-02 17:01

Is it possible to essentially run a wget from within a node.js app? I\'d like to have a script that crawls a site, and downloads a specific file, but the href

相关标签:
5条回答
  • 2021-02-02 17:15

    You can run an external command using child_processes:

    http://nodejs.org/docs/latest/api/child_process.html#child_process_child_process_exec_command_options_callback

    var util = require('util'),
        exec = require('child_process').exec,
        child,
        url = 'url to file';
    
    child = exec('wget ' + url,
      function (error, stdout, stderr) {
        console.log('stdout: ' + stdout);
        console.log('stderr: ' + stderr);
        if (error !== null) {
          console.log('exec error: ' + error);
        }
    });
    
    0 讨论(0)
  • 2021-02-02 17:19

    You can use node-wget. Works in cases where 'wget' is not possible

    0 讨论(0)
  • 2021-02-02 17:20

    While it might be a little more verbose than some third-party stuff, Node's core HTTP module provides for an HTTP client you could use for this:

    var http = require('http');
    var options = {
        host: 'www.site2scrape.com',
        port: 80,
        path: '/page/scrape_me.html'
      };
    var req = http.get(options, function(response) {
      // handle the response
      var res_data = '';
      response.on('data', function(chunk) {
        res_data += chunk;
      });
      response.on('end', function() {
        console.log(res_data);
      });
    });
    req.on('error', function(err) {
      console.log("Request error: " + err.message);
    });
    
    0 讨论(0)
  • 2021-02-02 17:22

    For future reference though, I would recommend request, which makes it this easy to fetch that file:

    var request = require("request");
    
    request(url, function(err, res, body) {
      // Do funky stuff with body
    });
    
    0 讨论(0)
  • 2021-02-02 17:23

    U can just use wget.

    var exec = require('child_process').exec;
    
    child = exec("/path/to/wget http://some.domain/some.file", function (error, stdout, stderr) {
    if (error !== null) {
      console.log("ERROR: " + error);
    }
    else {
      console.log("YEAH IT WORKED");
    }
    });
    
    0 讨论(0)
提交回复
热议问题