NodeJS下载带请求的HTML

时间:2017-11-28 16:45:59

标签: node.js request

使用NodeJS下载HTML页面时遇到很多麻烦。这是我的代码片段:



const request = require('request');

request('http://www.google.com', { json: true }, (err, res, body) => {
    if (err) { 
        return console.log(err); 
    }
    console.log(body.url);
    console.log(body.explanation);
});




当我单步执行此操作时,它会在大约半秒钟内执行。我没有收到任何错误,但我没有将任何内容记录到控制台......

1 个答案:

答案 0 :(得分:1)

这适合我。

const request = require('request')

request('https://google.com', (err, res, body) => console.log(err ? err : body))

通过请求,您可以将请求的响应正文直接传递给WriteableStream

const fs = require('fs')
const request = require('request')

request('https://google.com').pipe(fs.createWriteStream('./google-index.html'))

根据以下评论,以下示例说明如何包装此请求,以便可以等待并打印到屏幕或写入文件。

const {promisify} = require('util')
const fs = require('fs')
const writeFile = promisify(fs.writeFile)
const request = require('request')

const getGoogleIndexHTML = () => {
    return new Promise((resolve, reject) => {
        request('https://google.com', (err, res, body) => err ? reject(err) : resolve(body))
    })
}

const printAndWriteGoogleIndex = async () => {
    try {
        let googleIndexHTML = await getGoogleIndexHTML()
        console.log(googleIndexHTML)

        await writeFile('./google-index.html', googleIndexHTML, 'utf8')
        console.log('google-index.html written.')
    } catch(err) {
        console.log(err)
    }
}

printAndWriteGoogleIndex()