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,但事实是可能存在重定向历史,在运行我的代码时,您可以在其中找到历史。