Próba napisania funkcji w pliku node.js, która otrzyma element przez xpath.Uzyskiwanie elementu za pomocą xpath i cheerio
Mam XPath żądanego elementu DOM jak
xpath = '/html/body/div/div[2]/div/h1/span'
Mój DOM załadowanego cheerio poprzez fs moduł (bo ta strona przechowywane lokalnie):
var file = fs.readFileSync("aaa.html")
var inDom = cheerio.load(file)
Następnie Próbuję iterować za pośrednictwem każdej części xpath, pobrać element drzewa dom, sprawdzić jego dzieci, jeśli nazwa i numer elementu pasują, a jeśli tak, to przechowywać rez jako ten mathed elemen t. Następnie kontynuuję pracę przy nowej części xpath. Kod wygląda tak, ale nie dostaje tego, czego chcę, ponieważ zaraz po tym, jak dostaję pierwszy plik i ustawię jako dopasowany element rez, w następnym cyklu pętli ten nowy element wydaje się nie mieć żadnych elementów podrzędnych.
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
}
}
}
Czy ktoś może mi pomóc z kodu przy użyciu wymienionych modułów node.js?
zrobiłem realizować swoje podejście, a ja zatrzymany na uzyskanie, na przykład , trzeci element, gdy część xpath jest jak "../ div [3]/...". Używam kodu wklejonego tutaj http://pastebin.com/pzSYz6Zc Błąd jest również wklejony. – Astro
Bez próby html trudno jest dać sugestie. Proszę pisać przykładową stronę HTML – Noah
nie ma strona html, to część z kodu node.js – Astro