2016-12-01 32 views
0

我正在使用nightmare.js在中国电子商务网站taobao(www.taobao.com/)上进行网页脚本编写。目标是获取产品信息。该代码与yahoo example code非常相似,但结果始终为空。我试图把console.log调试,并意识到可能存在于querySelector中的错误。 下面是如果有人有时间去看看的代码。真的很感激它。无法使用node.js上的恶梦API返回document.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); 
    }); 
+0

只是试图去那个网站,做一个搜索'凯蒂猫',..没有什么与'.row'甚至'.row-2'类。但是,如果我做'document.querySelectorAll('。item')'这会给你所有的产品在页面上,如果这是你的事后。 – Keith

+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);