Парсер для Лиги Дня Рождения
Недавно @Midzukawa опубликовал этот пост, а под ним этот комментарий:
!!! ATTENTION !!!
В связи с огромным количеством людей, ищем модераторов для сортировки пользователей по датам и вообще помощи, боюсь, вдвоем нам будет тяжко.
Поднимите повыше, чтобы все видели, пожалуйста!
!!! ATTENTION !!!
Итак, уважаемый @Midzukawa, готов представить тебе мой парсер, написанный на коленке за 5 минут. Что он делает:
1. Имитирует нажатие "показать все комментарии" до тех пор, пока все из них не будет показаны
2. Распознаёт даты, в том числе названия месяцев
3. Выводит всё в файл
4. В случае ошибки выделяет этот коммент среди остальных в файле. Вот так:
Итак, как его использовать:
1. Открыть, внимание, пост с новой версии Пикабу!
2. Открыть консоль (если у Вас Google Chrome, то нажать F12)
3. В консоли открыть вкладку "Console"
4. Вставить такой код:
var comments = document.getElementsByClassName("comment__content");
var more = document.getElementsByClassName("comments__more-button");
while(more[0].style.display != "none"){
more[0].click();
await new Promise(resolve => setTimeout(resolve, 2000));
}
var textToSave = "---PIKALOGGER[1]---\r\n";
for(var i = 0; i < comments.length - 1; i++){
var comm = comments[i].innerText.replace(/[^a-zA-Zа-яА-Я0-9 .:!?]/g, "");
textToSave = textToSave.concat(comm);
var numon = comments[i].innerText.replace(/[^0-9.]/g, "");
var dates = numon.split(".", 2);
var month = dates[1];
if(comm.toLowerCase().includes("январ") && (month == "" || month == undefined)){
month = "01";
} else if(comm.toLowerCase().includes("феврал") && (month == "" || month == undefined)){
month = "02";
} else if(comm.toLowerCase().includes("март") && (month == "" || month == undefined)){
month = "03";
} else if(comm.toLowerCase().includes("апрел") && (month == "" || month == undefined)){
month = "04";
} else if(comm.toLowerCase().includes("ма") && (month == "" || month == undefined)){
month = "05";
} else if(comm.toLowerCase().includes("июн") && (month == "" || month == undefined)){
month = "06";
} else if(comm.toLowerCase().includes("июл") && (month == "" || month == undefined)){
month = "07";
} else if(comm.toLowerCase().includes("август") && (month == "" || month == undefined)){
month = "08";
} else if(comm.toLowerCase().includes("сентябр") && (month == "" || month == undefined)){
month = "09";
} else if(comm.toLowerCase().includes("октябр") && (month == "" || month == undefined)){
month = "10";
} else if(comm.toLowerCase().includes("ноябр") && (month == "" || month == undefined)){
month = "11";
} else if(comm.toLowerCase().includes("декабр") && (month == "" || month == undefined)){
month = "12";
}
var possibleDate = "=========================================================================================================================Возможная дата: ???";
if(dates[0] != undefined && dates[0] != "" && month != undefined && month != ""){
var possibleDate = "====================================================================================Возможная дата: ".concat(dates[0]).concat(".").concat(month);
}
textToSave = textToSave.concat("\r\n").concat(possibleDate).concat("\r\n---NEWCOMMENT---\r\n");
}
var textToSaveblob = new Blob([textToSave], {type:"text/plain"});
var textToSaveurl = window.URL.createObjectURL(textToSaveblob);
var downlink = document.createElement("a");
downlink.download = "Pikabu-comments-parsed.txt";
downlink.href = textToSaveurl;
document.body.appendChild(downlink);
downlink.click();
5. Нажать Enter
6. Чуть подождать
7. К вам скачался файл с результатами
8. ???
9. PROFIT
Ну и да, я родился девятого августа)
