我正在使用Node.js进行一些Web抓取。我想使用XPath,因为我可以使用几种GUI半自动生成它。问题是我找不到有效的方法。
jsdom
cheerio
phantom
casper
node <script>
node-inspector
Spooky
那么用XPath解析HTML页面的正确方法是什么?
您可以分几个步骤进行操作。
parse5
xmlserializer
xmldom
xpath
//a
最终,您得到了类似的内容。
const fs = require('mz/fs'); const xpath = require('xpath'); const parse5 = require('parse5'); const xmlser = require('xmlserializer'); const dom = require('xmldom').DOMParser; (async () => { const html = await fs.readFile('./test.htm'); const document = parse5.parse(html.toString()); const xhtml = xmlser.serializeToString(document); const doc = new dom().parseFromString(xhtml); const select = xpath.useNamespaces({"x": "http://www.w3.org/1999/xhtml"}); const nodes = select("//x:a/@href", doc); console.log(nodes); })();