xpath로 요소를 가져올 node.js 함수를 작성하려고합니다.xpath 및 cheerio를 사용하여 요소 가져 오기
제가
xpath = '/html/body/div/div[2]/div/h1/span'
내 DOM은 안녕에로드와 같은 원하는 DOM 요소의 XPath를 가지고 통해 FS 모듈 (I이 웹 페이지는 로컬로 저장되어 있기 때문에)
var file = fs.readFileSync("aaa.html")
var inDom = cheerio.load(file)
을이어서 각 xpath 부분을 반복하고 dom 트리의 요소를 가져오고 이름과 요소 번호가 일치하면 자식을 확인한 다음 rez을 mathed elemen으로 저장하려고합니다. 티. 그렇다면 새로운 xpath 부분을 계속 파고 있습니다. 이 코드는 다음과 같습니다.하지만 첫 번째 마하를 얻은 직후에 rez을 일치 요소로 설정했기 때문에 원하는 결과를 얻지 못했습니다. 다음 루프주기에서이 새 요소에는 하위 요소가없는 것 같습니다.
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
}
}
}
위에서 언급 한 node.js 모듈을 사용하여 코드를 도울 수 있습니까?
, 세 번째 요소, xpath의 일부가 '../ div [3]/...'과 같은 경우. 여기에 붙여 넣은 코드를 사용합니다. http://pastebin.com/pzSYz6Zc 오류도 붙여 넣습니다. – Astro
샘플 HTML이 없으면 제안을하기가 어렵습니다. 예제 HTML 페이지를 게시하십시오 – Noah
html 페이지가 없습니다. node.js 코드의 일부입니다. – Astro