用nodejs 改造一個移動版本的網站


前言

在瀏覽移動版本的oschina的時候,發現,怎么要找不到我最喜歡的翻譯頻道,正好我作為一個打雜的會一點node, 正愁着拿着node 不知道干什么東西好,就試着用node 做一個殼的移動版本翻譯頻道,如果你只對代碼有興趣的話,可以直接去 下載下來運行看看效果https://github.com/youxiachai/nodeScrapeOscTranslationChannel

准備

其實,所謂的套殼,就是我們俗稱的采集類網站,把別人網站的數據,變成自己的網站,雖然,不是上得了台面的東西,不過,如果不是用現成的采集工具,而是自己動手來干的話,你會對dom樹的操作,網頁的處理有更好的理解.基於某種考慮,特別寫上.

運用的技術與庫

  1. nodejs
  2. jsdom
  3. hashmap
  4. express

分析

我們要從外部改造一個網站,首先需要熟悉我們要改造對象的網站結構,將oschina 翻譯頻道進行草稿化,如下圖

 

經過我簡單分析以后然后轉換為移動版本的話 

在我的設計中只保留了分類,和列表,而在接下來的代碼實現中,我只實現了列表的部分...

譯文列表部分

翻譯頻道譯文列表的解析轉換代碼 請移步到gist 查看..為了方便閱讀,修改了一下跟最后源碼的實現會有點不同.

幸好翻譯頻道的結構挺簡單的,由於剛上手js不久,這個第一版的dom解析代碼還可以進行簡化,雖然,現在這個版本挺難看的但是,可以跑起來.

這段代碼的主要干了以下事情:

  1. 迭代每個div.article 結點獲取列表的信息,並且用<li />標簽進行包裝
  2. 把鏈接轉換為相對鏈接.

最終的效果:左邊為原頁面,右邊為移動版本

 

好了,這就完成了web -> mobile 頁面的轉換,接下來我們轉化一下內容頁.

譯文部分

草稿部分忽略,拍照什么的挺麻煩的.. 翻譯頻道譯文內容的解析轉換代碼 請移步到gist 查看..為了方便閱讀,修改了一下跟最后源碼的實現會有點不同.

這部分就比較簡單了,dom的操作

  1. 獲取譯文內容
  2. 移除了譯者信息..

最終的效果:左邊為原頁面,右邊為移動版本

內容方面我們就搞定了.下面的部分就是如何部署一個套殼的網站

建立屬於自己的移動網站

前提: 對express 有一定了解

要web 化很簡單,只需要把剛才的解析代碼放到路由里面即可,詳細實現看源碼..

app.get('/', callback);

app.get('/translate/:title', callback);

最終演示用地址掛在我自己的服務器上(用了google的短網址服務可能有轉換慢,或者無法訪問的情況) :演示網址http://goo.gl/K3Dc8

最近,kindle入華貌似變成了事實,特此貼上kindle瀏覽的效果..圖片壓縮了一下,可能效果差了不少,不過對於kindle3 而言中文字體的確很難看,有kpw可否貼下?

 

展望

由於整個程序雖然代碼不多,不過需要的知識的廣度不少,例如,dom樹,jsdom ,express, html5, 每個知識都只是用了那么一點...寫起來真不好下手,有興趣的朋友,可以fork 我github的項目,地址,開頭就給了.

當然,這個程序是一個半成品(一個晚上的代碼,再花了一個晚上寫這篇博文),很多東西都還沒加上...接下來,我應該會着手實現webapp離線化....


免責聲明!

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



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