【问题标题】:Select a web window prompt using node server crawler使用节点服务器爬虫选择 Web 窗口提示
【发布时间】:2019-12-03 23:27:49
【问题描述】:

我正在尝试使用 Node Crawler (https://github.com/bda-research/node-crawler) 访问网页,但我需要在窗口提示中输入凭据。

当尝试使用爬虫访问页面时,我会直接发送到 401 页面(如果我取消提示,我会在 Chrome 中被定向到该页面)。

var Crawler = require("crawler");    

var c = new Crawler({
  callback: function (error, res, done) {
    if (error) {
      console.log(error);
    } else {
      var $ = res.$;
      // $ is Cheerio by default
      //  a lean implementation of core jQuery designed specifically for the server
      console.log($("title").text()); // logs 401
    }
    done();
  }
});

c.queue(url);

谢谢!

【问题讨论】:

  • 显示您的代码以及您尝试过的内容。您是否使用 npm 包来执行此操作?没有更多信息很难提供帮助
  • 怎么样,@abney317?
  • 如果您需要与页面交互,最好使用puppeteer

标签: javascript html node.js web-crawler


【解决方案1】:

文档引用了另一个具有选项的库

您可以将这些选项传递给 Crawler() 构造函数,如果您希望它们是全局的,或者如果您希望它们特定于该项目(覆盖全局选项)作为 queue() 调用中的项目(覆盖全局选项)

此选项列表是mikeal's request options 的严格超集,将直接传递给 request() 方法。

该文档显示了 auth 选项

auth - 包含用户值的哈希 ||用户名,通过 ||密码和立即发送(可选)。请参阅上面的文档。

虽然我没有测试,但看起来像这样的东西会起作用

var Crawler = require("crawler");    

var c = new Crawler({
  auth: {
    user: 'username',
    pass: 'password'
  },
  callback: function (error, res, done) {
    if (error) {
      console.log(error);
    } else {
      var $ = res.$;
      // $ is Cheerio by default
      //  a lean implementation of core jQuery designed specifically for the server
      console.log($("title").text()); // logs 401
    }
    done();
  }
});

c.queue(url);

【讨论】:

    猜你喜欢
    • 2019-11-07
    • 1970-01-01
    • 2015-01-27
    • 1970-01-01
    • 2014-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多