Node.js NodeJS根据请求下载HTML

Node.js NodeJS根据请求下载HTML,node.js,request,Node.js,Request,在使用NodeJS下载HTML页面时遇到了不少麻烦。以下是我的代码片段: const request=require('request'); 请求('http://www.google.com“,{json:true},(err,res,body)=>{ 如果(错误){ 返回console.log(err); } log(body.url); console.log(body.explainion); });这对我很有用 const request = require('request')

在使用NodeJS下载HTML页面时遇到了不少麻烦。以下是我的代码片段:

const request=require('request');
请求('http://www.google.com“,{json:true},(err,res,body)=>{
如果(错误){
返回console.log(err);
}
log(body.url);
console.log(body.explainion);
});这对我很有用

const request = require('request')

request('https://google.com', (err, res, body) => console.log(err ? err : body))
使用request,您可以通过管道将请求的响应主体直接传输到
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()
这对我有用

const request = require('request')

request('https://google.com', (err, res, body) => console.log(err ? err : body))
使用request,您可以通过管道将请求的响应主体直接传输到
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()

刚试过,但没有打印到控制台上。。。还尝试用fs打印结果,但页面是空的。完全没有html…我测试了它们,它们都可以工作。确保您使用的是
https
,并且不要使用
json
标志。“确保您使用的是https”-您能在这里再解释一下吗?@Joshuahward实际上,刚刚测试了
http
https
,它们都有效。不确定您的环境出了什么问题,这段代码不起作用。除了使用请求之外,
fs
是节点核心的一部分,
createWriteStream()
无论如何都不是一个新函数。你是否完全按照自己的方式运行我的代码?好吧,我把这段代码分解成了另一个脚本,效果很好。我想问题可能与我使用NickJs,在异步函数中进行调用有关…只是尝试了一下,但没有打印到控制台上。。。还尝试用fs打印结果,但页面是空的。完全没有html…我测试了它们,它们都可以工作。确保您使用的是
https
,并且不要使用
json
标志。“确保您使用的是https”-您能在这里再解释一下吗?@Joshuahward实际上,刚刚测试了
http
https
,它们都有效。不确定您的环境出了什么问题,这段代码不起作用。除了使用请求之外,
fs
是节点核心的一部分,
createWriteStream()
无论如何都不是一个新函数。你是否完全按照自己的方式运行我的代码?好吧,我把这段代码分解成了另一个脚本,效果很好。我认为问题可能与我使用NickJs,并且在异步函数中进行调用有关。。。