nodejs上HTML分析利器node-jquery


      首先描述產生這篇隨筆的場景:我需要獲取項目在jenkins構建的最新Javascript Coverage顯示在供管理層次查看的項目情況Report上,但是由於jenkins沒有直接的API取得數據所需數據,所以我們只能從自建的容器發布Javascript Coverage數據API,供Report項目使用。

     由於采用簡單的數據分析,只是Host一個簡單的web Server,所以本人不喜歡Tomcat,IIS這類大型工具,顯得有點殺雞用牛刀,班門弄斧。我更喜歡node.js這類簡易的web容器。所以項目采用node.js,並node.js天然的javascript與html操作的天然一體,借助DOM結構使得解析Html更容易,簡潔。

      Node.js解析HTML DOM的當然是htmlpaser,jsdom。然而個人更喜歡jQuery的風格,與web jQuery的統一API,所以選擇了node-jquery.其代碼部署在Github的https://github.com/coolaj86/node-jquery.

     下面是本人寫個一個簡單demo:  抓取Github Popular project打印在控制台輸出。

 1 var $ = require('jquery');
 2 
 3  
 4 
 5 String.format = function() {
 6 
 7     var s = arguments[0];
 8 
 9     for (var i = 0; i < arguments.length - 1; i++) {
10 
11         var reg = new RegExp("\\{" + i + "\\}", "gm");
12 
13         s = s.replace(reg, arguments[i + 1]);
14 
15     }
16 
17  
18 
19     return s;
20 
21 };
22 
23  
24 
25  $.get("https://github.com/popular/forked",function(html){
26 
27  
28 
29         var $doc = $(html);
30 
31     console.log("No.  name  language  star   forks  ")
32 
33         $doc.find("ul.repolist li.source").each(function(i,project){
34 
35  
36 
37         var $project = $(project);
38 
39                var name = $project.find("h3").text().trim();
40 
41                var language = $project.find("li:eq(0)").text().trim();
42 
43                var star = $project.find("li.stargazers").text().trim();
44 
45                var forks = $project.find("li.forks").text().trim();
46 
47                var row =String.format("{4} {0}  {1}  {2}  {3}",name,
48 
49                        language,star,forks,i + 1 );
50 
51               
52 
53                console.log(row);
54 
55         });
56 
57  });

此項目寄宿在我Github https://github.com/greengerong/node-jquery-demo。僅供了解node-jquery學習demo,歡迎指教。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM