无法在node.js上使用nightmare API返回document.querySelector

时间:2016-12-01 11:43:05

标签: javascript node.js cloud9-ide nightmare

我在中国电子商务网站淘宝网(www.taobao.com/)上使用nightmare.js进行网页编写。目标是获取产品信息。代码与yahoo example code非常相似,但结果始终为null。我试图将console.log调试并意识到错误可能存在于querySelector中。 如果有人有时间看看,下面是代码。真的很感激。

var Nightmare = require('nightmare');
var nightmare = Nightmare({ show: true });

nightmare
  .goto('https://www.taobao.com')
  .type('form[action*="/search"] [name=q]', 'hellow kitty')
  .click('form[action*="/search"] [type=submit]')
  .wait(2000)
  .evaluate(function () {
    return document.querySelector('.row.row-2.title a')
  })
  .end()
  .then(function (result) {
    console.log(result)
  })
  .catch(function (error) {
    console.error('Search failed:', error);
  });

1 个答案:

答案 0 :(得分:0)

首先:仔细检查您的选择器并确保它们存在。

除此之外,问题在于return document.querySelector('.row.row-2.title a')。 DOM列表(如从document.querySelector返回的列表)不能很好地序列化。尝试在返回之前拉出你想要的结果 - 假设你想要来自锚点的HREF,你可以做一些像(从臀部):

return Array.from(document.querySelector('.row.row-2.title a')).map(a=> a.href);