Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从NodeJS获取当前URL';s请求模块_Javascript_Node.js_Web Scraping_Screen Scraping - Fatal编程技术网

Javascript 从NodeJS获取当前URL';s请求模块

Javascript 从NodeJS获取当前URL';s请求模块,javascript,node.js,web-scraping,screen-scraping,Javascript,Node.js,Web Scraping,Screen Scraping,我正在使用nodeJS和。我试图从一个网页上抓取数据,但我的数据来自一个API,它只提供链接跟踪URL 例如,此链接: 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/cat

我正在使用
nodeJS
和。我试图从一个网页上抓取数据,但我的数据来自一个API,它只提供链接跟踪URL

例如,此链接:

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
(即第一个重定向到的第二个链接)并将其存储为变量

签出:

它在名为重定向的响应对象中提供了一个内部数组:

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个重定向)

这应该可以做到:

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);
    }
});

我对您在这里的用法有点困惑(尤其是
%j
部分),您能更新您的代码来回答上面的特定用例吗?
%j
部分意味着它将打印出对象的JSON表示。我猜您只需要URL,但事实是可能存在重定向历史,在运行我的代码时,您可以在其中找到历史。