Вот что я сделал
Когда вы сначала загружаете страницу видеоролика youtube и прокручиваете вниз, первое, с чем вы сталкиваетесь (и последний элемент на данный момент), - это поле комментариев с селектором ytd-comments#comments
, а затем, когда комментарии начинают загружаться, последний элемент комментария с селектором ytd-comment-thread-renderer.style-scope.ytd-item-section-renderer
- это последний элемент на страницу (в этот момент).
Поэтому вместо прокрутки страницы (и взятия комментария из комментария @mplungjan) я прокрутил до этих элементов с помощью этого кода
var flag_a =0, flag_b=0;
const COMMENTS_SCROLL_SELECTORS ={
COMMENT_BOX: 'ytd-comments#comments',
COMMENT_LAST: 'ytd-comment-thread-renderer.style-scope.ytd-item-section-renderer'
}
page.on('response', response => {
if (<the url which brings comment>){
++flag_b;
}
});
setInterval(() => {
scrollToBottom();
}, 5000);
async function scrollToBottom(){
if(flag_a == flag_b){
await page.evaluate((COMMENTS_SCROLL_SELECTORS) => {
var ele = document.querySelector(COMMENTS_SCROLL_SELECTORS.COMMENT_LAST);
if(ele){
//first scroll already performed, so perform subsequent scrolls
var length = document.querySelectorAll(COMMENTS_SCROLL_SELECTORS.COMMENT_LAST).length;
ele = document.querySelectorAll(COMMENTS_SCROLL_SELECTORS.COMMENT_LAST)[length - 1];
ele.scrollIntoView();
}else{
//perform first scroll
ele = document.querySelector(COMMENTS_SCROLL_SELECTORS.COMMENT_BOX);
ele.scrollIntoView();
}
}, COMMENTS_SCROLL_SELECTORS);
++flag_a;
}else{
process.exit()
}
}