#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. (Встроенный комментарий должен быть расширен до объяснения в обычном тексте до или после вашего примера кода. Объясните , а также покажите).