前言
在瀏覽移動版本的oschina的時候,發現,怎么要找不到我最喜歡的翻譯頻道,正好我作為一個打雜的會一點node, 正愁着拿着node 不知道干什么東西好,就試着用node 做一個殼的移動版本翻譯頻道,如果你只對代碼有興趣的話,可以直接去 下載下來運行看看效果https://github.com/youxiachai/nodeScrapeOscTranslationChannel
准備
其實,所謂的套殼,就是我們俗稱的采集類網站,把別人網站的數據,變成自己的網站,雖然,不是上得了台面的東西,不過,如果不是用現成的采集工具,而是自己動手來干的話,你會對dom樹的操作,網頁的處理有更好的理解.基於某種考慮,特別寫上.
運用的技術與庫
分析
我們要從外部改造一個網站,首先需要熟悉我們要改造對象的網站結構,將oschina 翻譯頻道進行草稿化,如下圖
經過我簡單分析以后然后轉換為移動版本的話
在我的設計中只保留了分類,和列表,而在接下來的代碼實現中,我只實現了列表的部分...
譯文列表部分
翻譯頻道譯文列表的解析轉換代碼 請移步到gist 查看..為了方便閱讀,修改了一下跟最后源碼的實現會有點不同.
幸好翻譯頻道的結構挺簡單的,由於剛上手js不久,這個第一版的dom解析代碼還可以進行簡化,雖然,現在這個版本挺難看的但是,可以跑起來.
這段代碼的主要干了以下事情:
- 迭代每個div.article 結點獲取列表的信息,並且用
<li />
標簽進行包裝 - 把鏈接轉換為相對鏈接.
最終的效果:左邊為原頁面,右邊為移動版本
好了,這就完成了web -> mobile 頁面的轉換,接下來我們轉化一下內容頁.
譯文部分
草稿部分忽略,拍照什么的挺麻煩的.. 翻譯頻道譯文內容的解析轉換代碼 請移步到gist 查看..為了方便閱讀,修改了一下跟最后源碼的實現會有點不同.
這部分就比較簡單了,dom的操作
- 獲取譯文內容
- 移除了譯者信息..
最終的效果:左邊為原頁面,右邊為移動版本
內容方面我們就搞定了.下面的部分就是如何部署一個套殼的網站
建立屬於自己的移動網站
前提: 對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離線化....