从NodeJS的REQUEST模块获取当前URL

时间:2013-08-19 00:39:42

标签: javascript node.js web-scraping screen-scraping

我正在使用nodeJSrequest module。我正在尝试从网页上抓取数据,但我的数据来自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

我知道大部分链接都嵌入在原始网址中,但情况并非总是这样,所以请忽略它/不发布建议正则表达式的答案摆脱这种方式!

使用Request,我如何抓取页面的URL(即第一个重定向到的第二个链接)并将其存储为变量?

2 个答案:

答案 0 :(得分: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);
    }
});

答案 1 :(得分:0)

结帐line #77 of request.js

它在名为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'])
  }
})

然后,您可以找到具有重定向历史记录的数组的JSON表示,包括状态代码和重定向URL。 (我发现您提供的网址中有3个重定向)