Provare a scrivere una funzione in node.js che otterrà l'elemento da xpath.Ottenere elemento usando xpath e cheerio
Ho un XPath dell'elemento DOM desiderato come
xpath = '/html/body/div/div[2]/div/h1/span'
mio DOM è stato caricato in cheerio via fs modulo (perché ho il sito memorizzate localmente):
var file = fs.readFileSync("aaa.html")
var inDom = cheerio.load(file)
Poi Sto provando ad iterare attraverso ogni parte di xpath, ottenere l'elemento dell'albero dom, controllare che siano figli se il nome e il numero dell'elemento corrispondono, e se lo fanno, memorizza rez come questo elemen mathed t. Quindi continuo a scavare con la nuova parte xpath. Il codice appare come questo, ma non riesce a ottenere ciò che voglio perché appena ottengo il primo mach e impostato rez come elemento corrispondente, nel prossimo ciclo ciclo questo nuovo elemento sembra non avere alcun elemento figlio.
var rez = inDom('html');
var xpath = inXpath.split("/");
for(var i = iterateStart; i < xpath.length; i++) {
var selector = xpath[ i ].split('[')[0];
var matches = xpath[ i ].match(/\[(.*?)\]/);
var child = 0;
if(matches) {
child = matches[ 1 ];
}
for(var k = 0; k < rez.length; k++) {
var found = false
var curE = rez[ k ]
for(var p = 0; p < curE.children.length; p++) {
var curE_child = curE.children[ p ]
if(curE_child.name = selector) {
if(child > 0) {
child--
}
else {
rez = curE_child
found = true
break
}
}
}
if(found) {
break
}
}
}
Qualcuno può aiutarmi con il codice utilizzando i moduli Node.JS menzionati?
mi ha attuato il suo approccio, e ho attaccato su come ottenere, ad esempio, , terzo elemento, quando la parte di xpath è come '../ div [3]/...'. Uso il codice incollato qui http://pastebin.com/pzSYz6Zc Anche l'errore viene incollato. – Astro
Senza esempi di codice HTML è difficile dare suggerimenti. Per favore pubblica una pagina html di esempio – Noah
non c'è una pagina html, è una parte dal codice node.js – Astro