我正在使用nodeJS
和request
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
(即第一个重定向到的第二个链接)并将其存储为变量?
答案 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)
它在名为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个重定向)