2016-12-01 5 views
0

Я использую nightmare.js для веб-скриптов на веб-сайте китайской электронной коммерции taobao (www.taobao.com/). Цель состоит в том, чтобы получить информацию о продукте. Код очень похож на yahoo example code, но результат всегда равен нулю. Я попытался вывести console.log для отладки и понял, что ошибка может зависеть от querySelector. Ниже приведен код, если у кого-то есть время, чтобы взглянуть. Действительно ценю это.не может вернуть document.querySelector с API-интерфейсом nightmare на node.js

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

Просто пытался идти на этот сайт и делает поиск для 'Hello Kitty ', .. там нет ничего с классом' .row' или даже '.row-2'. Но если я делаю 'document.querySelectorAll ('. Item')', это даст вам все продукты на странице, если это то, что вы сделали после. – Keith

+0

Используйте скриншот(), чтобы увидеть, что было показано на целевой странице во время выполнения оценки. Это должно дать вам представление о том, существует ли элемент, который вы пытаетесь прочитать, или нет. –

ответ

0

Прежде всего: проверьте свои селекторы и убедитесь, что они существуют.

Отметив, что в стороне, вопрос лежит с return document.querySelector('.row.row-2.title a'). Списки DOM (например, возвращенные с document.querySelector) не сериализуются красиво. Попробуйте потянув результаты, которые вы хотите перед возвращением - сказать, что вы хотели, HREFs от якорей, вы могли бы сделать что-то подобное (от бедра):

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

 Смежные вопросы

  • Нет связанных вопросов^_^