Как получить элементы с помощью getElementsByClassName?

#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