jsdom で属性を取得する方法のメモ。
getAttributeNames() で属性名のリストを取得できます。
そして、getAttribute(属性名) で属性値を取得することができます。
■実行結果
getAttributeNames() で属性名のリストを取得できます。
そして、getAttribute(属性名) で属性値を取得することができます。
const { JSDOM } = require('jsdom'); const html = ` <html> <head> <title>test</title> <meta keyword="kw1,kw2,kw3"> </head> <body> abc <img src="image1.png" alt="image1"/> <div>div1-1</div> xyz </body> </html> `; const dom = new JSDOM(html); const doc = dom.window.document; function get_texts(node, texts=[]) { console.log("--"); console.log("nodeType: " + node.nodeType); console.log("nodeName: " + node.nodeName); console.log("nodeValue: " + node.nodeValue); if (node.nodeType === node.TEXT_NODE) { texts.push(node.nodeValue); } else if (node.nodeType === node.ELEMENT_NODE) { console.log("attrs: " + node.getAttributeNames()); console.log("alt: " + node.getAttribute('alt')); for (const child of node.childNodes) { get_texts(child, texts); } } return texts; } const texts = get_texts(doc.body); console.log(texts);
■実行結果
-- nodeType: 1 nodeName: BODY nodeValue: null attrs: alt: null -- nodeType: 3 nodeName: #text nodeValue: abc -- nodeType: 1 nodeName: IMG nodeValue: null attrs: src,alt alt: image1 -- nodeType: 3 nodeName: #text nodeValue: -- nodeType: 1 nodeName: DIV nodeValue: null attrs: alt: null -- nodeType: 3 nodeName: #text nodeValue: div1-1 -- nodeType: 3 nodeName: #text nodeValue: xyz