2017-07-09 23 views
-2

私は画像検索のリクエストを取得しようとしていますが、私は私のブラウザにあるのと同じ結果を得ていません。 node.jsを使って同じ結果を得る方法はありますか?リクエストを取得し、ブラウザがNodejsと同じ結果を得る方法を教えてください。

ここで私が使用しているコードです:リクエスト-約束ライブラリに切り替えるとChromeブラウザからUser-Agentヘッダ名と実際のユーザーエージェント文字列の適切な時価総額を使用することにより

var keyword = "Photographie" 
keyword = keyword.replace(/[^a-zA-Z0-9éàèùâêîôûçëïü]/g, "+") 

var httpOptions = { hostname: 'yandex.com', 
        path: '/images/search?text=' + keyword, //path does not accept spaces or dashes 
        headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'user-agent': 'Mozilla/5.0'}} 

console.log(httpOptions.hostname + httpOptions.path +postTitle) 

https.get(httpOptions, (httpResponse) => { 
    console.log(`STATUS: ${httpResponse.statusCode}`); 
    httpResponse.setEncoding('utf8'); 
    httpResponse.on('data', (htmlBody) => { 
     console.log(`BODY: ${htmlBody}`); 
    }); 
}); 
+0

何が違うかのヒントを教えてください。 – Mike

+0

すべて、私はブラウザではないと判断し、何の結果も表示しません。 –

+0

node.jsのコンテンツをリクエストしたときに表示される内容と、ブラウザでコンテンツを取得するときに表示される内容について、さらに詳しく説明する必要があります。たとえば、ページがクライアントサイドのJavaScriptを使用してレンダリングされる場合、ページをロードして実行して目的のコンテンツを取得するにはブラウザのような環境が必要です。リクエスト元のサーバがブラウザのユーザエージェントを持っていないことを検出しただけの場合は、ユーザエージェントを偽装する必要があります。私たちはおそらくあなたからの多くの情報なしで知ることはできません。 – jfriend00

答えて

0

は、このコードは、私の作品:

const rp = require('request-promise'); 
let keyword = "Photographie" 

let options = { url: 'http://yandex.com/images/search?text=' + keyword, 
       headers: {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36'} 
    }; 

rp(options).then(response => { 
    console.log(response); 
}).catch(err => { 
    console.log(err); 
}); 

私はあなたの実際のコードを実行しようとすると、私は302リダイレクトとクッキーのセットを取得します。私はあなたがリダイレクトに従ってクッキーを保持することを期待していると推測しています。しかし、あなたは明らかに上記のコードに切り替えることができ、それは私のために動作するように見えます。私はコードがうまくいくかどうかは分かりませんが、それはもっと認識できるユーザエージェントを持っている可能性があります。

+0

@DanyM - これはあなたの質問に答えましたか? – jfriend00

関連する問題