0

私が使用nodeJSしているのはrequestモジュールです。Web ページからデータをスクレイピングしようとしていますが、データはリンク追跡 URL のみを提供する API から取得されています。

たとえば、このリンク:

http://www.kqzyfj.com/click-7227532-11292048?url=http%3A%2F%2Fwww.urbanoutfitters.com%2Furban%2Fcatalog%2Fproductdetail.jsp%3Fid%3D27074590

実際にここにつながる:

http://www.urbanoutfitters.com/urban/catalog/productdetail.jsp?id=27074590&cm_mmc=CJ-_-Affiliates-_-Threadfinder-_-11292048

ほとんどのリンクが元の URL に埋め込まれていることは承知していますが、常にそうであるとは限らないため、無視してください。正規表現を提案する回答を投稿しないでください。

Request を使用して、ページURL(つまり、最初のリダイレクト先の 2 番目のリンク) を取得し、変数として保存するにはどうすればよいですか?

4

2 に答える 2

1

これはそれを行う必要があります:

request(url, function(err, res, body){
    // get final redirect url
    if(this.redirects.length){
        var destUrl = this.redirects[this.redirects.length-1].redirectUri;
        console.log(destUrl);
    }
});
于 2013-08-19T01:28:41.873 に答える
0

request.js の 77 行目をチェックアウトします。

という名前の応答オブジェクトに内部配列を提供しますredirects

var request = require('request');
var url = "http://www.kqzyfj.com/click-7227532-11292048?url=http%3A%2F%2Fwww.urbanoutfitters.com%2Furban%2Fcatalog%2Fproductdetail.jsp%3Fid%3D27074590";

request(url, function (error, response, body) {
  if (!error && response.statusCode == 200) {
    console.log("%j", response['request']['redirects'])
  }
})

次に、ステータス コードとリダイレクト URL を含むリダイレクト履歴を含む配列の JSON 表現を見つけることができます。(あなたが提供した URL から 3 つのリダイレクトがあることがわかりました)

于 2013-08-19T01:09:40.030 に答える