【问题标题】:Getting current URL from NodeJS's REQUEST module从 NodeJS 的 REQUEST 模块获取当前 URL
【发布时间】:2013-08-19 00:39:42
【问题描述】:

我正在使用nodeJSrequest module。我试图从网页上抓取数据,但我的数据来自一个 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 中,但情况并非总是如此,所以请忽略它/不要发布建议正则表达式的答案摆脱困境!

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

【问题讨论】:

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


    【解决方案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);
        }
    });
    

    【讨论】:

      【解决方案2】:

      查看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。 (我发现您提供的 URL 中有 3 个重定向)

      【讨论】:

      • 我对你在这里的使用有点困惑(尤其是%j 部分),你能更新你的代码来回答上面的具体用例吗?
      • %j 部分意味着它将打印出对象的 JSON 表示。猜你只想要 URL,但事实是可能有重定向历史,你可以在运行我的代码时找到历史。
      猜你喜欢
      • 2018-03-23
      • 1970-01-01
      • 2018-06-09
      • 2016-05-09
      • 2021-06-10
      • 2012-07-05
      • 2010-10-30
      相关资源
      最近更新 更多