2016-04-30 56 views
0

任何人都可以爲我執行這個node.js程序嗎?執行一個nodejs程序,無法安裝模塊

我無法在Windows中安裝xml解析器。

//to install xml-parser module in windows type this in cmd: npm install xml-parser 
var fs = require('fs'); 
var parse = require('xml-parser'); 
var xml = fs.readFileSync('sample_table.html'); 
    var get_parser = parse(xml); 
    var in_csv = []; 
    get_parser.root.children.forEach(function(tr) { 
     data.push(tr.children.map(function(td) { 
      return td.content; 
     }).join(',')); 
    }); 
    in_csv = in_csv.join('\r\n'); 
    fs.writeFile('dates.csv', in_csv, function(err){ 
     if(err){ 
      return console.error(err); 
    } 

,這是sample_table.html

<table> 
<tbody> 
<tr style="color:#333333;background-color:White;"> 
<td>2016-04-28</td> 
<td>RLYUDP-DP</td> 
<td>RELIANCE FIXED HORIZON FUND XXX SERIES 18-- DIVIDEND PAYOUT</td> 
<td>F204KB1254</td> 
<td>10.0000</td> 
<td>KARVY</td> 
</tr> 
<tr style="color:#333333;background-color:White;"> 
<td>2016-04-28</td> 
<td>RLYUGP-GR</td> 
<td>RELIANCE FIXED HORIZON FUND XXX SERIES 18- GROWTH</td> 
<td>YUGP</td> 
<td>10.0000</td> 
<td>KARVY</td> 
</tr> 
<tr style="color:#333333;background-color:White;"> 
<td>2016-04-28</td> 
<td>UTCXDP-DP</td> 
<td>UTI-CAPITAL PROTECTION ORIENTED SCHEME - SERIES VII - IV 1278 DAD PLAN</td> 
<td>CXDP</td> 
<td>N</td> 
<td>INF789FC1691</td> 
<td>10.0000</td> 
<td>KARVY</td> 

</tbody> 
    </table> 

,或者你可以按照這裏的直接鏈接https://github.com/suresach/nodejs_scraper

+0

當您執行npm install xml-parser時會出現錯誤嗎? – grimurd

+0

yeahh this: http://stackoverflow.com/questions/36936873/npm-not-working-in-windows? 你能幫忙嗎? – sachsure

+1

在你要安裝的文件夾中應該有一個npm-debug.log文件。把它的內容放在pastebin上,並將它鏈接到你的問題中。 – grimurd

回答

0

我看不出有什麼問題,節點或NPM。我看到一個錯字在你的代碼,但:

replace 
     data.push(tr.children.map(function(td) { 
with 
     in_csv.push(tr.children.map(function(td) { 

這裏是我的測試的輸出:

C:\home\node\codes>node -v 
v6.0.0 

C:\home\node\codes>npm -v 
3.8.6 

C:\home\node\codes>npm install xml-parser 
C:\home\node\codes 
+-- [email protected] 
+-- [email protected] 
`-- [email protected] 

npm WARN enoent ENOENT: no such file or directory, open 'C:\home\node\codes\package.json' 
npm WARN codes No description 
npm WARN codes No repository field. 
npm WARN codes No README data 
npm WARN codes No license field. 

C:\home\node\codes>cat foo.js 
var fs = require('fs'); 
var parse = require('xml-parser'); 
var xml = fs.readFileSync('sample_table.html', 'utf8'); 
var get_parser = parse(xml); 
var in_csv = []; 
get_parser.root.children.forEach(function(tr) { 
     in_csv.push(tr.children.map(function(td) { 
      return td.content; 
     }).join(',')); 
    }); 
    in_csv = in_csv.join('\r\n'); 

    fs.writeFile('dates.csv', in_csv, function(err){ 
     if(err){ 
      return console.error(err); 
    } 
}); 

C:\home\node\codes>node foo.js 

C:\home\node\codes>cat dates.csv 
,, 
C:\home\node\codes> 
+0

是,..該.csv文件的輸出? 但我不想那 我想要的是用逗號分隔​​元素 – sachsure

0

下面是修改後的代碼 - 基本上沒有映射器函數內部需要另一個重新定向。希望這可以幫助。

var fs = require('fs'); 
var parse = require('xml-parser'); 
var xml = fs.readFileSync('sample_table.html', 'utf8'); 
var data = []; 
var get_parser = parse(xml); 
var in_csv = []; 
get_parser.root.children.forEach(function(tr) { 

     in_csv.push(tr.children.map(function(td) { 
      return td.children.map(function(child) { 
       return child.content; 
      } 
       ); 
     }).join(',')); 
    }); 
    in_csv = in_csv.join('\r\n'); 

    fs.writeFile('dates.csv', in_csv, function(err){ 
     if(err){ 
      return console.error(err); 
    } 
}); 



C:\home\node\codes>cat dates.csv 
2016-04-28,RLYUDP-DP,RELIANCE FIXED HORIZON FUND XXX SERIES 18-- DIVIDEND PAYOUT,F204KB1254,10.0000,KARVY,2016-04-28,RLYUGP-GR,REL 
IANCE FIXED HORIZON FUND XXX SERIES 18- GROWTH,YUGP,10.0000,KARVY,2016-04-28,UTCXDP-DP,UTI-CAPITAL PROTECTION ORIENTED SCHEME - SE 
RIES VII - IV 1278 DAD PLAN,CXDP,N,INF789FC1691,10.0000,KARVY 
C:\home\node\codes>