それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

js で querySelector では取れない「コメント」ノードをを取得したい

js で querySelector では取れない「コメント」ノードをを取得したい。

スクレイピングしていると、データのIDが属性値になくコメントに入っている事があるので。

コメント・ノードを取得する

function getComments( node ) {
    var comments = [];
    var treeWalker = document.createTreeWalker(
        node,
        NodeFilter.SHOW_COMMENT,
        null,
        false
    );

    var currentNode = treeWalker.nextNode();
    while (currentNode) {
        comments.push(currentNode);
        currentNode = treeWalker.nextNode();
    }

    return comments;
}

ツリーの中をたどって指定したタイプのノードを取得する。今回は、コメントノードを取得する。

動かしてみる。

var e = list[0]
var commentNodes = getComments(e);
console.log(commentNodes);  // コメントノードのリストが表示されます

コメントの中身がほしいときは

コメント要素(ノード)それ自体を取得したい場面より、コメント本文を参照したい場面が多いと思うので。

getComments(e.querySelector('div'))[0].textContent.trim()

参考資料

MDN(https://developer.mozilla.org/en-US/docs/Web/API/Document/createTreeWalker)