#javascript #web-scraping #nightmare
Вопрос:
Я использую NightmareJS и пытался создать веб-сайт с помощью document.getElementsByClassName, это код:
import Nightmare from 'nightmare'
const nightmare = Nightmare({ show: true })
var name = name
nightmare
.goto('https://www.amazon.com/')
.insert("input[aria-label='Search']", 'impressora')
.click("input[value='Go']")
.wait(2000)
.evaluate(function(){
let text = document.getElementsByClassName('a-offscreen')[0];
name = text;
return name;
}).then(function (name) {
console.log('Price:', name)
});
Результат такой:
Price: [object HTMLSpanElement]
Что я хотел бы получить, так это цену, которая находится в классе «а-за кадром». Кто-нибудь может помочь? Спасибо.
Комментарии:
1.
return document.querySelector('.a-offscreen span').innerText;
(вы пытаетесь напечатать сам элемент, а не текст внутри него)
Ответ №1:
document.getElementsByClassName(class);
возвращает коллекцию элементов, имеющих запрошенный класс, но не их содержимое, поэтому вам необходимо получить доступ innerText
к свойству вашего элемента:
let text = document.getElementsByClassName('a-offscreen')[0].innerText;
name = text;
return name;
Результатом будет:
Price: $199.99