看板 Browsers 關於我們 聯絡資訊
標題: [心得] 將 opera mini 儲存的網頁轉換成 HTML 時間: Sun Feb 21 17:56:38 2016 好讀版: 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 -- sent from mySQL. -- ※ 發信站: 夢之大地 (ccns.cc), 來自: 140.116.249.140 ※ 文章網址: telnet://ccns.cc/
foo:這作者……02/30 22:66
void:奇文共賞!!02/30 28:19
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.116.102.127 ※ 文章網址: https://www.ptt.cc/bbs/Browsers/M.1455853537.A.3E6.html ※ 編輯: Gold740716 (140.116.102.127), 02/20/2016 12:25:50
abram: 專業! 02/21 15:24
改寫並轉載到 mobilecomm 板,但好像還是沒什麼人氣……。 我以為很多人用 opera mini 的……。 請問板主 m 文是? ※ 編輯: Gold740716 (140.116.102.127), 02/21/2016 21:34:54
Go2: 覺得你很厲害 所以M文保留 XD 02/21 23:42