function initContents(elements, tier) {
for (element of elements) {
if (element.className === 'comment-wrapper') {
initContents(element.children, tier + 1);
}
else if(element.className === 'comment-item') {
contents.push(element.querySelector('.content'));
replyTiers.push(tier);
}
}
}
let listArea = document.querySelector('.list-area');
let contents = [];
let replyTiers = [];
initContents(listArea.children, -1);
let s = '순번\t닉네임\t아이피/번호\t타입\t글 작성자\t작성일\t답글\t수정\t내용\n';
for (let i = 0; i < contents.length; i++) {
let name;
let nameNum = '';
let nameType;
// dynamic
if (contents[i].querySelector('.info-row > .user-info > a') === null) {
[name, nameNum] = contents[i].querySelector('.info-row > .user-info > span').attributes['data-filter'].value.split(', ');
nameType = '유동';
}
// non-dynamic
else {
name = contents[i].querySelector('.info-row > .user-info > a').attributes['data-filter'].value;
if (name.includes('#')) {
[name, nameNum] = name.split('#');
nameType = '반고닉';
}
else {
nameType = '고닉';
}
}
let authorType = '';
// post author
if (contents[i].querySelector('.info-row > .author') !== null) {
authorType = 'O';
}
let time;
time = contents[i].querySelector('.info-row > .right > time').textContent;
let msg = '';
// non-acacon
if (contents[i].querySelector('.message > .text') !== null) {
msg = contents[i].querySelector('.message > .text').textContent;
}
// acacon
else {
// non-gif
if (contents[i].querySelector('.message > .emoticon-wrapper > img') !== null) {
msg = '아카콘#' + contents[i].querySelector('.message > .emoticon-wrapper > img').attributes['data-id'].value;
}
// gif
else {
msg = '아카콘#' + contents[i].querySelector('.message > .emoticon-wrapper > video').attributes['data-id'].value;
}
}
// link
if (contents[i].querySelector('.text.d-none') !== null) {
msg = contents[i].querySelector('.text.d-none > pre > a').href;
}
let modified = '';
// modified
if (contents[i].querySelector('.message > .modified') !== null) {
modified = 'O';
}
let replyTier = '';
// non-reply
if (replyTiers[i] > 0) {
replyTier = replyTiers[i];
}
// reply for deleted comment
else if (contents[i].querySelector('.message > .ion-backspace') !== null) {
replyTier = '삭제됨';
}
msg = msg.replaceAll('\n', ' \\n ');
s += i + 1;
s += '\t' + name;
s += '\t' + nameNum;
s += '\t' + nameType;
s += '\t' + authorType;
s += '\t' + time;
s += '\t' + replyTier;
s += '\t' + modified;
s += '\t' + msg;
s += '\n';
}
console.log(s);
0. 크롬 기반 브라우저를 켬 (크롬 말고 안써봄)
1. 개발자모드를 켬 ( F12 또는 Ctrl + Shift + i )
2. console 탭으로 감
3. 위 코드를 복붙하면 결과가 나옴
4. 결과를 엑셀에 복붙하면 잘 정돈된채로 옮겨짐
위 댓글로 테스트
개발자 도구 - 콘솔에서 붙여넣기 했더니 결과가 나옴
그대로 엑셀에 붙여넣기 하면 위와 같이 나옴
아이피/번호는 유동 아이피 or 반고닉 번호
답글은 몇번째 레벨 답글인지 표시함
만약 원래 댓글이 지워져서 붕 떠버린 답글은 삭제됨이라고 표시됨
수정된 댓글이면 '수정됨' 열에 O로 표시됨