2017-11-28 12 views
0

NodeJSを使用してダウンロードするHTMLページを取得するのにかなりの手間があります。私はこれをステップ実行するとき、それは約半分秒で実行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

これは私のために働いています。要求に

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() 
+0

ちょうど試してみましたが、コンソールに何も印刷されませんでした。また、fsで結果を印刷しようとしましたが、ページは空です。 htmlは全くありません... –

+0

私はそれらの両方をテストし、両方とも動作します。あなたが 'https'を使っていることを確認し、' json'フラグを使わないでください。 – peteb

+0

「httpsを使用していることを確認してください」 - ここでもう少し説明できますか? –

関連する問題