Почему я продолжаю получать Null?

#javascript #node.js #web-scraping #cheerio

#javascript #node.js #очистка веб-страниц #приветствие

Вопрос:

 const request = require('request');
const cheerio = require('cheerio');

request('https://www.ratemyprofessors.com/ShowRatings.jsp?tid=1985428', (error, response, html) => {
    if(!error amp;amp; response.statusCode ==200){
        //console.log(html);
        const $ = cheerio.load(html); 
        
        const profTopComment = $('.Comments__StyledComments-dzzyvm-0 dvnRbr');
        
        console.log(profTopComment.html());
    }
});
  

Я пытаюсь создать расширение Chrome для извлечения данных из RatemyProffessor, но при попытке извлечь наиболее значимый комментарий из приведенного выше URL-адреса я продолжаю получать null, любая помощь была бы потрясающей!

Когда я говорю «получение Null», я имею в виду console.log(profTopComment.html ()) выдает мне null в терминале.

Я пытаюсь наскрести Наиболее полезный рейтинг.

Комментарии:

1. Может быть, селектор неверен, или элемент еще не существует

2. @charlietfl Я не верю, что у меня неправильный селектор, но я новичок в веб-очистке. Вот ссылка на страницу, которую я пытаюсь очистить, я пытаюсь очистить «САМЫЙ ПОЛЕЗНЫЙ РЕЙТИНГ»: [ссылка] ( ratemyprofessors.com/ShowRatings.jsp?tid=1985428 )

3. @charlietfl Не могли бы вы пояснить, что вы подразумеваете под «элемент еще не существует»?

4. Возможно, он вставляется с помощью javascript после загрузки страницы и отсутствует во время запуска вашего кода. Попробуйте добавить setTimeout и посмотрите, поможет ли это

Ответ №1:

  • '.Comments__StyledComments-dzzyvm-0.dvnRbr' второй "." необходим для поиска <div></div> элемента с two разными классами на нем
  • В основном просто измените '.Comments__StyledComments-dzzyvm-0 dvnRbr' на '.Comments__StyledComments-dzzyvm-0.dvnRbr' в своем коде.

Пример:

 const axios = require('axios');
const cheerio = require('cheerio');

async function testFunc() {
  const result = await 
  axios.get('https://www.ratemyprofessors.com/ShowRatings.jsp?tid=1985428');
  const $ = cheerio.load(result.data);
  const profTopComment = $('.Comments__StyledComments-dzzyvm-0.dvnRbr');
  console.log(profTopComment.html());
}
testFunc();
  

Комментарии:

1. Пожалуйста, объясните, почему опубликованный вами код должен решить заявленную проблему. Код сам по себе не настолько полезен.

2. (Встроенный комментарий должен быть расширен до объяснения в обычном тексте до или после вашего примера кода. Объясните , а также покажите).