0
xpathノードjsをhtmlファイルから使用して情報を変数として取得し、後で情報をいくつかのテーブルの形式で使用したいと思います。 I次のエラーが発生しました。ノードjs xpath解析htmlテーブル
タイター
タイター
<p>
<FONT COLOR="blue" SIZE='+2'>
<B><U>
blabkbkba </U></B>
</FONT>
</p>
<p>
<FONT COLOR="red" SIZE='+2'>
<B> font </B>
</FONT>
</p>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0">
<TR bgcolor="#DCDCDC">
<TD><B> info1 </B></TD><TD><B> info2 </B></TD><TD><B> info3 </B></TD>
<TD><B> info4 </B></TD><TD><B> info4 </B></TD><TD><B> info5 </B></TD>
<TD><B> info6 </B></TD><TD><B> info7 </B></TD><TD><B> info7 </B></TD>
<TD><B> info8 </B></TD><TD><B> info9 </B></TD><TD><B> info10</B></TD>
<TD><B> info11 </B></TD><TD><B> info12</B></TD>
</TR>
<TR bgcolor="#B0C4DE">
<TD><B> info11 </B></TD><TD><B> info21 </B></TD><TD><B> info31 </B></TD>
<TD><B> info41 </B></TD><TD><B> info41 </B></TD><TD><B> info51 </B></TD>
<TD><B> info61 </B></TD><TD><B> info71 </B></TD><TD><B> info71 </B></TD>
<TD><B> info81 </B></TD><TD><B> info91 </B></TD><TD><B> info101</B></TD>
<TD><B> info111 </B></TD><TD><B> info121</B></TD>
</TR>
</TABLE>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0">
<TR bgcolor="#DCDCDC">
<TD><B> info1 </B></TD><TD><B> info2 </B></TD><TD><B> info3 </B></TD>
<TD><B> info4 </B></TD><TD><B> info4 </B></TD><TD><B> info5 </B></TD>
<TD><B> info6 </B></TD><TD><B> info7 </B></TD><TD><B> info7 </B></TD>
<TD><B> info8 </B></TD><TD><B> info9 </B></TD><TD><B> info10</B></TD>
<TD><B> info11 </B></TD><TD><B> info12</B></TD>
</TR>
<TR bgcolor="#B0C4DE">
<TD><B> info11 </B></TD><TD><B> info21 </B></TD><TD><B> info31 </B></TD>
<TD><B> info41 </B></TD><TD><B> info41 </B></TD><TD><B> info51 </B></TD>
<TD><B> info61 </B></TD><TD><B> info71 </B></TD><TD><B> info71 </B></TD>
<TD><B> info81 </B></TD><TD><B> info91 </B></TD><TD><B> info101</B></TD>
<TD><B> info111 </B></TD><TD><B> info121</B></TD>
</TR>
</TABLE>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0">
<TR bgcolor="#DCDCDC">
<TD><B> info1 </B></TD><TD><B> info2 </B></TD><TD><B> info3 </B></TD>
<TD><B> info4 </B></TD><TD><B> info4 </B></TD><TD><B> info5 </B></TD>
<TD><B> info6 </B></TD><TD><B> info7 </B></TD><TD><B> info7 </B></TD>
<TD><B> info8 </B></TD><TD><B> info9 </B></TD><TD><B> info10</B></TD>
<TD><B> info11 </B></TD><TD><B> info12</B></TD>
</TR>
<TR bgcolor="#B0C4DE">
<TD><B> info11 </B></TD><TD><B> info21 </B></TD><TD><B> info31 </B></TD>
<TD><B> info41 </B></TD><TD><B> info41 </B></TD><TD><B> info51 </B></TD>
<TD><B> info61 </B></TD><TD><B> info71 </B></TD><TD><B> info71 </B></TD>
<TD><B> info81 </B></TD><TD><B> info91 </B></TD><TD><B> info101</B></TD>
<TD><B> info111 </B></TD><TD><B> info121</B></TD>
</TR>
</TABLE>
<p>
<a href="info.jsp">info</a>
</p>
:私はすべてのコードと添付ファイルを置きます
var fs = require('fs'),
xpath = require('xpath'),
dom = require('xmldom').DOMParser,
promise = require('promise');
function loadDistantFile (url) {
return new Promise(function (resolve, reject) {
fs.readFile(url, 'utf8', function (err, data) {
if (err) {
reject(err);
} else {
resolve(data);
}
});
});
}
loadDistantFile('./CrewSchedulejspShort.htm').then(function (content) {
var doc = new dom().parseFromString(content);
var nodes = xpath.select("//TABLE", doc);
for (i = 0; i < nodes.length; i++) {
var tr = xpath.select(nodes[i], "//TR").data;
var td = xpath.select(tr[0], "//TD"[0]).data;
console.log('td = '+td);
}
console.log(nodes[1].toString());
//console.log("Node: " + nodes[0].toString())
}).catch(function (err) {
console.error('Erreur !');
console.dir(err);
});
私はこの応答があります:
Erreurをここ
はあなたが私には私のミスを理解するのに役立ちます私はTDの内容を回復するために最初rtmepsにしようとするために使用するコードです!
Error: XPath parse error
at XPathParser.parse (/Users/user/Desktop/lire html/node_modules/xpath/xpath.js:1185:11)
at new XPathExpression (/Users/user/Desktop/lire html/node_modules/xpath/xpath.js:4278:17)
at Object.exports.selectWithResolver (/Users/user/Desktop/lire html/node_modules/xpath/xpath.js:4699:19)
at Object.exports.select (/Users/user/Desktop/lire html/node_modules/xpath/xpath.js:4682:17)
at /Users/user/Desktop/lire html/app.js:31:24
user:lire html user$
あなたのお手伝いをしてくれてありがとうございます。しかし、どのように私は異なる配列を回復し、すべての情報を適切に回復するために異なるtrとtdを回復しますか? – user3210174
"// TABLE"( 'var nodes')と同じように新しい配列をフェッチする必要があります。その後、別の' forループ 'を実行する必要があります –