xpathで要素を取得する関数をnode.jsに書き込もうとしています。xpathとcheerioを使って要素を取得する
私はチェリオ経由FSモジュール(私はこのWebページをローカルに保存されている必要があるため)私のDOMがにロードされている
xpath = '/html/body/div/div[2]/div/h1/span'
のような希望のDOM要素のXPathを持っている:
var file = fs.readFileSync("aaa.html")
var inDom = cheerio.load(file)
その後私は各xpath部分を繰り返して、DOMツリーの要素を取得し、名前と要素番号が一致する場合は子要素をチェックし、そうであればrezをこのマテ要素のelemenとして格納しようとしています。 t。それから私は新しい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モジュールを使用してコードを教えてもらえますか?
、3番目の要素、xpathの部分が '../ div [3]/...'のようなものであるとき。私はここに貼り付けたコードを使用します。http://pastebin.com/pzSYz6Zcエラーも貼り付けられます。 – Astro
サンプルHTMLなしでは、あなたに提案をするのは難しいです。 htmlページの例を投稿してください – Noah
htmlページはありません、それはnode.jsコードの一部です。 – Astro