將 opera mini 儲存的網頁轉換成 HTML - 手機討論

Genevieve avatar
By Genevieve
at 2016-02-21T17:56

Table of Contents




好讀版:
http://myweb.ncku.edu.tw/~c34031328/diary/obml.html

[Opera_mini] 是 opera 公司推出的適合手機的瀏覽器,
但其實 *她* 並不解析 [HTML] 。
她的運作必需依賴 Opera 公司的伺服器,
將網頁由 HTML 格式轉換成 **OBML** 格式;
同時大幅縮小網頁大小。
後再由 opera mini 解析、排版。
固她才可以 [繞過色情守門員] 。

[繞過色情守門員]: http://myweb.ncku.edu.tw/~c34031328/diary/man.html


OBML 格式全名 *Opera Binary Markup Language* ,
是由 opera 公司所開發,針對 HTML 簡化格式。
她並不全是文字,其中內含了一些二進位碼,
用來表示某段文字是的格式。(像超連結、標題、顏色。)
嘗試以純文字讀取會有部份亂碼。
(或全部亂碼。我以 [more] 或 [less] 讀取時
二進位會顯示為亂碼,文字就保有文字。
別的工具有沒有這麼聰明我就不確定了。)

另外我不知道為什麼,
我的 OBML 檔副檔名不是 `*.obml` , 而是 `*.obml16` .
反正沒差,可以看就好了,以下仍稱 `*.obml` .
但讀者請自行確認自己的是 `*.obml` 或 `*.obml16` .



## 前言 ##

在舊手機上只用 opera mini .
而又舊手機除了上網也沒什麼能做的;
固上面就積了一堆 *儲存* 來離線看的網頁。
最近換手機,想把這 *脫拉庫* 東西抓出來,
轉換成方便的格式。於是搜尋了一下,記錄流程。



## 取出 obml 檔 ##

首先取得 root 權限;沒有的話用 adb 也可以。
( adb 能取得 root 權限。)
目標是把存在內部空間的 obml 檔複製出來。
以我來說路徑是:
`/data/data/com.opera.mini.android/files/*.obml`
我的檔案名是一串七或八個數字,副檔名 obml .



### 使用 adb ###

** 無須 root 權限 **

$ adb root pull "/data/data/com.opera.mini.android/files"
# 拉出整個目錄

$ adb root pull "/data/data/com.opera.mini.android/files/*.obml"
# 拉出特定檔案

不會 adb 的請自己 google.
( 或等我有空寫一篇文章;但不做別人做過的事是我的原則:P
網路上這麼多教學了……。)



### 使用 root explore ###

** 必須取得 root 權限 **

隨便找一款支援 root 的檔案管理員,
進到你的 opera mini 的資料夾。

四處看看,把副檔名是 obml 的檔案都複製到 sdcard
或其它你方便的地方。

然後再複製回電腦裡。




## 將 `*.obml` 轉換成 `*.html` ##

google 大神與 SlackOverFlow ,
都只推薦用 Java 虛擬機器可以在電腦跑 Opera mini .
但我認為這樣還是很不方便。
希望可以轉成 HTML , PDF , 或者純文字也可以。
於是在 github 上找到這東西: [obml-parser] .
可以把 OBML 轉換回 HTML .
(同場加映,同位作者寫的 [OBML 語法介紹] 。
如果有興趣的話可以讀。)

[obml-parser]: https://github.com/grawity/hacks/blob/master/hacks/Text/obml-parser
[OBML 語法介紹]: https://gist.github.com/grawity/702b31cddcc5a6622724/a00d1b072e7d7344488e4d1b6cae7ab3a14b2399



** 用 [python] 寫得,所以你得要有 python 才行。 **
(或等某個好心人把它轉成可執行檔;
"" 別看我,我不會 python . "" )


請用 python3 或以上,我也不知道為什麼。
"" 我說過我不會 python. ""
因為我 [fedora] 23 , 直接打 python 是對應到 python2.X ,
然後 python2.X 說我的檔案沒有宣告編碼。(???)
python3 就不會;所以我指令下 python3 .
(感覺是如果檔案內有用到 *非 ASCII* 要宣告,
不然 python2.X 直譯器會報錯。)


python3 obml-parser *.obml


ls # 顯示 *.obml *.obml.html

# 原本只有 `*.obml` ,
# 多出 `*.obml.html` .


在放 obml 的目錄下會生成一個
`*.obml.html` 的檔案,
可以直接用瀏覽器看。



## 糟糕的 HTML ##

打開後和用 opera mini 看一樣……;
就是只有 6, 7 公分寬, [像這樣] 。
如果不給看或看起來很奇怪,可以看一下原始碼。
它的 HTML 很糟……,完全沒有結構。
(沒有 `<html>` , `<head>` , `<body>` , 全部混在一起。)

[像這樣]: http://myweb.ncku.edu.tw/~c34031328/study/html/opera_mini/54613806.obml16.html


而且還宣告了 `<!DOCTYPE html>` ...,
要求瀏覽器以標準的語法來剖析該文件。
(如果沒有宣告,瀏覽器會以 [怪異模式] 來剖析 HTML .
這樣就算語法不正確,看起來也 *還可以* 。)



### tidy 拯救混亂的 HTML ###

[tidy] 是 w3c 開啟的一開源專案,
該程式會嘗試修正不正確的 HTML 語法;
並重新排版。如果你的瀏覽很挑食,
拒絕 *obml-parser* 所生出的 HTML ,
可以試試這招。
"" 雖然我的 firefox 看起來都一樣。 ""


tidy 前:
http://myweb.ncku.edu.tw/~c34031328/study/html/opera_mini/54613806.obml16.tidy.html

tidy 後:
http://myweb.ncku.edu.tw/~c34031328/study/html/opera_mini/54613806.obml16.html



** 注意! **
*我的版本* 的 tidy 會預設將輸入視為 ASCII ,
但很遺憾 *obml-parser* 所轉出來的是 **UTF-8** .
所以你需要指定編碼;或指定不處理編碼問題。


tidy -raw *.obml.html > *.obml.tidy.html
# 不處理編碼
tidy -utf8 *.obml.html > *.obml.tidy.html
# 指定 UTF-8





--
因為她不知道,唯一值得她流淚的人,絕不會讓她流淚。

--
Tags: 手機

All Comments

Hedda avatar
By Hedda
at 2016-02-23T18:00
請正名奇虎公司
Blanche avatar
By Blanche
at 2016-02-25T18:03
只能說中國央央大國,總有一些公司會成為中國公司。
Emma avatar
By Emma
at 2016-02-27T18:07
那也是沒辦法的事

note3 鎖4g的方法?

Mason avatar
By Mason
at 2016-02-21T17:32
大家好 小弟現在工作的地方4g很弱 很容易跳回3g 想請問各位前輩有沒有什麼app或是方法可以把網路鎖在4g 試了很多app 三星都不支援啊! 麻煩各位前輩賜教了…… - ...

ZL 5.1.1 網路待機超耗電

Quintina avatar
By Quintina
at 2016-02-21T17:13
上個禮拜才把ZL從4.X升級到5.1.1 第一有感就是變很順 最不習慣就是變超耗電 有玩手機的話大概10分鐘掉4% 平常都是WIFI與3G都會開啟 電池用量的話就是and#34;網路待機and#34;最高 約30~50% http://imgur.com/SBxu5qT 比螢幕用量還要高 以前 ...

沒它不可!華為筆記本今天正式發布

Zora avatar
By Zora
at 2016-02-21T17:12
http://news.mydrivers.com/1/470/470776.htm 今天晚上21點,華為要在巴塞羅那發布新產品,它到底會是什麼呢? 從之前曝光的眾多消息來看,華為要推出的新品是一款2合1的筆記本,這基本上得到了官 方的證實,同時從華為連放出的“薄”、“快”宣傳海報,則預示著這款設備運行速 ...

OPPO受到特定帳號狂推崇?

Emily avatar
By Emily
at 2016-02-21T17:10
※ 引述《nickname1o1 (小資BOY)》之銘言: : 最近爬文發現 : 只要有人詢問請推薦手機 : 就會有人推文推oppo : 爬了十幾篇發現 : 就那幾個帳號在推來推去 : oppo這麼受到特定帳號狂推崇 : 而且假日也推幾乎不用休息欸 : 有oppo的使用者現身說法一下嗎 : 是不是真的如特地帳 ...

發表前幾小,完整搶先看三星 Galaxy S7

Skylar DavisLinda avatar
By Skylar DavisLinda
at 2016-02-21T16:49
三星 Galaxy S7 即將在西班牙巴塞隆納舉辦(GMT+1), 也就是台灣時間的明天(2/22)凌晨 1:00 a.m. 發表, 但各種三星 Galaxy S7 的曝光和洩露依然沒有停止, 近日外媒 AndroidHeadlines 放上了 Galaxy S7/S7 Edge 更明顯的實機照片。 S7 ...