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)