2017-08-08 9 views
1

NodeJSにページ(https://www.csfd.cz/tvurce/65871)をダウンロードしたいのですが、ランダムなデータがあります。このファイルは唯一の19Kを持っているのに対し、NodeJSのページをダウンロードできません

�}Ms�F������+i"��)�Jْ;�e���7�KM0��LƩ��]��Yg��b�� 
                Ow7U��J�#�K�9��L 

が、私はそれだけで間違ったエンコーディングですが、でもサイズが間違っていると思った(ダウンロードページには、44Kを持っている。何がさらに驚くべきは、Pythonでそれをダウンロードするシンプルで良い作品ということである。
Pythonコードを私もpでrequest.getのような追加の方法を試してみました

const request = require('request-promise') 
const fs = require('fs') 
request('https://www.csfd.cz/tvurce/65871').then((html) => { 
    fs.writeFileSync('output.html', html) 
}) 

:JavaScriptのコード

import requests 
url = "https://www.csfd.cz/tvurce/65871" 
r = requests.get(url) 
with open('pyth.txt','wb') as handle: 
    handle.write(r.content) 

Arametersなど、それでも同じ結果です。私が間違っていることを教えてもらえますか?

答えて

1

リクエストモジュールで圧縮オプションを使用します(リクエストモジュール(https://github.com/request/request)の例を参照)。あなたは自動的にあなたの要求cuzの301と302リダイレクトをフォローするfollowRedirectとfollowAllRedirectパラメータは302を返しても、必要

:また

curl -X GET https://www.csfd.cz/tvurce/65871 --compressed -v -i 

Response : 302 
<h1>Redirect</h1> 

<p><a href="https://www.csfd.cz/tvurce/65871-kit-harington/">Please 
click here to continue</a>.</p> 

は標準WriteFile関数で

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

request.get({ 
    url:'https://www.csfd.cz/tvurce/65871', 
    gzip: true, 
    followRedirect: true, 
    followAllRedirect: true 
}, function(err, response, body){ 
    if(err || !response || response.statusCode != 200) 
    { 
     // error case, do stg 
    } 
    else 
    { 
     fs.writeFile('output.html', body, "utf8", function(err){ 

     if(err) 
     { 
      // error do stg 
     } 
     else 
     { 
      // success 
     } 
     }); 
    } 

}) 
をごwriteFileSyncを置き換えます
0

Content-Encodingヘッダーを読んでください。圧縮されている可能性が最も高いので、サイズの違いを説明できます。

1

私は別のもの、さまざまなオプションとエンコーディング、いくつかのパーサーを試しましたが、requestrequest-promiseで動作するようにはなりませんでした。ドキュメントから、私はあなたが間違って何もしていないと言います。

別のモジュールunirestnpm install unirest --save)を試してみました。

const unirest = require('unirest'); 
const fs = require('fs'); 

var Request = unirest.get('https://www.csfd.cz/tvurce/65871') 
    .end(function(res) { 
     console.log(res.body); 
     fs.writeFileSync('output.html', res.body) 
    }); 

希望です。

関連する問題