整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          把HTML網頁下載為單文件,可離線訪問

          網頁下載下來使用,在日常工作中使用頻率還是很高的,有時候確實能解一時之急,我自己就有很窘迫的經歷。

          我開會的時候,都會把準備好的文檔存在局域網,到會議室直接打開就能直接用了。有一次到分公司,由于分公司剛剛成立,內網還沒有和母公司連通。結果這下子懵逼了,上不去內網,看不到文檔。又是叫同事發過來,又是提發送文件的安全申請,讓人著急。

          如果把網站保存下來,放在自己的電腦中,既不用擔心信息泄露問題,又不用為了看不了文檔而著急。

          遇到問題,記錄下來,然后解決問題,程序員的解決思路永遠是自己創造輪子的,接下來就是不斷的探索解決方案。

          其實下載網頁的方式有很多種,其中有幾種辦法使用的比較多,例如:如果你用Chrome,直接按 Ctrl+s 就可實現。使用這種方法,Chrome會把整個網站,按照編譯完成的源碼目錄結構保存下來。像下面這樣:

          下載完成的文件直接點擊 xxx.html 可以直接離線訪問,但是這種方式對目錄的依賴結構比較高,怎么理解呢?就是 html 文件和對應文件名的文件夾必須在同一個目錄中,才能正常使用??截惖狡渌麢C器的時候必須要兩個同時拷貝才可以,否則就會排版錯亂。

          如果有十個或者更多的網頁需要拷貝或者刪除,就會很麻煩,例如我想在其中找到其中幾個,復制到其他地方,很容易弄錯順序。

          HTML 是一種純文本格式,它用于排版文字。純文本文檔的意思就是,文檔中只包含文字內容,不包含二進制內容,舉個例子:打印出的A4紙,只有文字沒有圖片。而 HTML 想要顯示照片等二進制信息,通常都會鏈接到其他文件,也就是上面文件夾里面的內容。

          不過 Chrome 下載文件這種方式也有優點,下載下來的文件可以保持獨立性,比如說,我需要這個網頁中的一張圖片,那么就可以直接到文件夾里面尋找了。

          另外還有一種辦法,也有很多人再使用。Chrome 在打印網頁的時候,會把網頁轉成 PDF ,然后在進行打印。那么就給我們提供了很明確的思路,把網頁直接保存為 PDF ,這樣保存下來的網頁就只有一個文件。

          使用Chrome,直接按下Ctrl+p就可以。然后目標打印機選擇 另存為 PDF 。

          這個功能很多瀏覽器都支持

          但是這種辦法也有很明顯的缺點,由于 PDF 是靜態文檔,網頁上的一些動畫可能不會正常顯示,而且排版也有可能會錯亂,這完全靠運氣。個人覺得這不是一種很靠譜的方法。

          這時候主角來了!有一個工具既可以把網頁保存為 html 又可以保持是單文件。他就是 monolith ,你可以在 github 上面找到它,但是源碼并沒有編譯為可執行文件,我把它編譯了一下,下面會放上來鏈接,https://github.com/leconio/Repos/raw/master/monolith.7z。

          那么下面就簡單說說使用方法:如果你下載我的鏈接,那么里面有三個文件:

          第一個是Mac平臺編譯出來的,使用方式為:

          ./monolith 網站地址 > xxx.html
          

          默認情況下 monolith 會把生成的 html 輸出到標準輸出流,也就是當前終端。使用 > 我們把輸出的內容重定向并覆蓋到文件。

          執行完成之后,在這個目錄下面就會有一個對應的文件:xxx.html 。

          另外兩個是 Windows 平臺使用的。為了簡化使用,我寫了一個 CMD 腳本。直接點擊 monolith.cmd ,然后粘貼地址就可以完成下載。

          下載完成之后,在本地你會發現只有一個 html 文件。我們打開之后,發現圖片和JS等信息都在,而且排版正常。那么就要思考了,我們之前說過,HTML 是放置純文本信息的,那么圖片在哪里呢?

          答案顯而易見,就在 HTML 文件里面。為了方便小圖片傳輸,有一種叫 Base64 的東西,它可以把二進制信息變成成純文本。這在使用 Json 傳遞數據的今天十分常見,它可以減少一次請求(題外話),這里就是用的這個原理。monolith 把圖片等二進制內容轉為了純文本,保存在 HTML 文件中。我們在下載的文件源碼可以看到:

          對比源代碼,src 信息已經變成了 base64 格式的圖片,就是那串亂碼。復制那串亂碼,從網上搜一個 base64 轉圖片工具,粘貼進去,這時會發現就是我們看到的那張圖片。這樣一來,無論這個網站上有多少個文件,都會保存到一個 HTML 文件里面,而且還能離線使用。

          當然,base64 編碼的圖片比原生圖片略大,這可能也是你現在在擔心的問題。不過 monolith 會特殊處理文件體積。我們可以看看 Chrome 直接下載和使用 monolith 下載體積相差多少。我們把兩種方式下載的網頁都進行了 7-Zip 壓縮。

          我們可以看到,使用 monolith 下載會比 Chrome 直接下載小一倍還多!

          最后要說的是局限性,無論那種方法,都幾乎不能把視頻網站中的視頻下載下來。因為現在的視頻地址都是 Token 加密的,同理,使用 Token 加密的其他請求信息也無法下載。

          比如你可以試試下載其他網站的首頁,Logo 和視頻都是下載不了的。但是也有解決辦法,那就是另外一個領域的事情了,以后有機會說給大家聽。

          如果這篇文章對您或者您的朋友有幫助,感謝您關注,轉發。

          emory Pictures for Mac是一款優秀的照片記憶編寫軟件,Memory Pictures mac版可以在照片的標題中嵌入位置和文本,支持照片來源識別、顯示照片拍攝的地標經緯度等功能,通過地理位置和文字內容來給你的照片編寫記憶,有需要Memory Pictures mac版的朋友可以來試試哦!

          Memory Pictures for Mac官方介紹

          Memory Pictures通過幫助您在照片標題中嵌入位置和日記條目來幫助您保持記憶。我們都用數碼相機和智能手機拍照,這無疑是回顧我們來自哪里和去過哪里的好方法。然而,僅憑一張照片可能無法描繪出整個故事。

          Memory Pictures 是一款 OS X 應用程序,可讓您做到這一點。使用數碼相機拍攝的照片支持大量關于用于使用 EXIF 標題拍攝照片的所有設置的信息。嵌套在 EXIF 標題中的是 GPS 坐標和用戶評論設置。Memory Pictures 支持 JPEG、HEIC 照片和 RAW 照片格式,包括 Canon RAW (CR2 & CR3)、Fujifilm RAW (RAF)、Mamiya RAW (MEF)、Nikon RAW (NEF)、Olympus RAW (ORF)、Panasonic RAW (RW2) 、賓得 RAW (PEF) 和索尼 RAW (SR2 & ARW)。

          一張照片可能會畫出一千個字,但添加到照片中的幾句話肯定會喚起對特殊場合的回憶。Memory Pictures 就是為了讓您做到這一點而開發的。

          https://mac.orsoon.com/Mac/190656.html?id=MTY4MTYyJl8mMjIwLjE4Ni40LjQ1

          Memory Pictures mac版功能特點

          Memory Pictures 的核心目標是通過幫助您在照片標題中嵌入位置和日記條目來讓您的記憶保持活力。我們都用數碼相機和智能手機拍照,這無疑是回顧我們來自哪里和去過哪里的好方法。然而,僅憑一張照片可能無法描繪出整個故事。

          一張照片可能會畫出一千個字,但在照片中添加幾句話肯定會喚起對特殊場合的回憶。Memory Pictures 就是為了讓您做到這一點而開發的。

          照片+地點+故事=永遠的記憶

          Memory Pictures 是一款 OS X 應用程序,可讓您做到這一點。使用數碼相機拍攝的照片支持大量關于用于使用 EXIF 標題拍攝照片的所有設置的信息。嵌套在 EXIF 標題中的是 GPS 坐標和用戶評論設置。這不會干擾照片本身。Memory Pictures 支持 JPEG、HEIC 照片、PNG 和 RAW 照片格式,包括 Adobe RAW (DNG)、Canon RAW (CR2 & CR3)、Fujifilm RAW (RAF)、Mamiya RAW (MEF)、Minolta RAW (MRW)、Nikon RAW ( NEF & NRW)、奧林巴斯 RAW (ORF)、松下 RAW (RW2)、賓得 RAW (PEF) 和索尼 RAW (SR2 & ARW)。

          iPhone 配備了出色的攝像頭,與許多智能手機一樣,它肯定會被廣泛使用。一件美妙的事情是 iPhone 帶有 GPS 并且確實將照片拍攝位置嵌入到照片中,這樣您就可以查看并知道那些美好的回憶是在哪里捕捉到的。如果拍攝對象就在前面,那就太好了你們,但有時我們會從遠處拍照,但手機只記錄你所在位置的 GPS。

          用戶評論標簽是一個很好的補充,但很少使用。

          這就是記憶圖片的用武之地。它可以幫助您:-

          * 添加/修改照片中嵌入的 GPS 坐標

          * 添加/修改照片中的地點、地址和國家/地區以對其進行個性化

          * 添加/修改您的個人筆記或故事,就在照片中,因此您無需單獨記錄照片

          * 添加/修改關鍵字

          * 修改 EXIF 日期

          * 支持將所有照片的坐標和注釋列表導出為 CSV 文件。CSV 格式如下

          文件名、日期、緯度、經度、GPS 坐標、地點、地址、國家、備注、關鍵字

          使用記憶圖片可以輕松找到您的照片位置,您無需知道該地點的緯度和經度。

          對于其中沒有任何 GPS 坐標的照片,例如從傻瓜相機或數碼單反相機拍攝的照片,您可以:-

          a) 通過輸入流行的地名、地址和/或國家來使用搜索功能,它會為您鎖定該地點。

          b) 要微調位置,只需將 Pin 拖動到實際位置,即可自動計算 GPS 坐標。非常適合那些捕捉 GPS 坐標的照片。

          或者

          c) 滾動地圖并調出上下文菜單并固定該位置。

          這從未如此簡單。您可以將 GPS 坐標和備注更改為列表中的一張或多張照片。

          要啟動更大的地圖視圖,請單擊內置地圖視圖右上角的藍色放大鏡。

          我們不使用任何專有設置,因此任何支持它們的應用程序或網站都可以讀取您的用戶評論和 GPS 坐標。

          讓您的朋友下載我們的Free Mac Memory Pictures Viewer或Free Windows Memory Pictures Viewer,以查看帶有嵌入信息的照片。

          Memory Pictures是保存未來記憶的必備工具。我們確保應用程序不會更改 EXIF 日期(如果有)、文件創建和修改日期。因此它們將與處理之前完全相同。僅添加或修改注釋和 GPS 坐標。

          用Memory Pictures為您和您的后代保護您的遺產。

          現在您可以通過社交媒體分享您的筆記

          天分享一個CSS圖片瀏覽效果

          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

          <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-cn" lang="zh-cn">

          <head>

          <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

          <title>CSS相冊瀏覽</title>

          <script src="urchin.js" type="text/javascript"></script>

          <script type="text/javascript">

          _uacct = "UA-780254-3";

          urchinTracker();

          </script>

          <style type="text/css">

          h2,ul,li{margin:0;padding:0;list-style:none;}

          img{border:0;}

          .imgview{

          position:absolute;

          top:30px;

          z-index:80;

          float:left;

          width:857px;

          height:auto;

          min-height:440px;

          }

          .imgview a{

          text-decoration:none;

          }

          .imgview h2{

          position:absolute;

          top:10px;

          left:10px;

          width:290px;

          height:30px;

          background-color:#FFFFFF;

          color:#000000;

          font-size:1.2em;

          text-indent:10px;

          line-height:30px;

          }

          .imgview ul{

          position:absolute;

          top:48px;

          left:10px;

          z-index:90;

          width:290px;

          height:auto;

          min-height:230px;

          background-color:#FFFFFF;

          }

          .imgview ul li{

          float:left;

          width:82px;

          height:59px;

          margin:8px 6px 7px;

          border:1px solid #DEDEDE;

          }

          .imgview ul li strong{

          display:none;

          }

          .imgview ul li a:hover{

          display:block;

          width:100%;

          height:100%;

          }

          .imgview ul li a:focus strong,

          .imgview ul li a:active strong{

          display:block;

          position:absolute;

          top:350px;

          left:300px;

          z-indent:100;

          width:537px;

          height:30px;

          background-color:#FFFFFF;

          color:#000000;

          text-indent:10px;

          line-height:30px;

          }

          .imgview ul li a:hover span img{

          position:absolute;

          top:240px;

          left:1px;

          width:200px;

          height:140px;

          }

          .imgview ul li a:active span img,

          .imgview ul li a:focus span img{

          position:absolute;

          top:-38px;

          left:300px;

          z-index:90;

          width:537px;

          height:380px;

          }

          .imgview ul li img{

          width:80px;

          height:57px;

          }

          .imgview .imgview-rep{

          position:absolute;

          top:287px;

          left:10px;

          z-index:10;

          width:201px;

          height:140px;

          border:1px solid #999999;

          color:#EFEFEF;

          font-size:2em;

          text-align:center;

          line-height:140px;

          }

          .imgview .imgview-bgtext{

          position:absolute;

          top:9px;

          left:309px;

          z-index:10;

          width:537px;

          height:380px;

          border:1px solid #999999;

          color:#EFEFEF;

          font-size:5em;

          text-align:center;

          line-height:380px;

          }

          .imgtag{

          position:absolute;

          top:130px;

          left:10px;

          }

          .imgtag .tagname{

          float:left;

          width:100px;

          height:30px;

          text-align:center;

          line-height:30px;

          cursor:pointer;

          }

          .imgtag .tag1

          .imgtag .tag2,

          .imgtag .tag3{

          position:absolute;

          left:0;

          width:100px;

          }

          .imgtag .tag1{

          position:absolute;

          left:0;

          background-color:#BCC8C3;

          }

          .imgtag .tag1 .imgview{

          left:0;

          background-color:#BCC8C3;

          }

          .imgtag .tag2{

          position:absolute;

          left:102px;

          background-color:#BFB6B4;

          }

          .imgtag .tag2 .imgview{

          display:none;

          }

          .imgtag .tag2:hover .imgview{

          display:block;

          left:-102px;

          z-index:80;

          background-color:#BFB6B4;

          }

          .imgtag .tag3{

          position:absolute;

          left:204px;

          background-color:#CCC8BF;

          }

          .imgtag .tag3 .imgview{

          display:none;

          }

          .imgtag .tag3:hover .imgview{

          display:block;

          left:-204px;

          z-index:80;

          background-color:#CCC8BF;

          }

          content:".";

          display:block;

          height:0;

          clear:both;

          visibility:hidden;

          }

          </style>

          </head>

          <body>

          <p>CSS圖片瀏覽效果</p>

          <div class="imgtag">

          <div class="tag1">

          <!--[if lte IE 6]><a href="#1" class="taga1"><![endif]-->

          <div class="tagname">分類一</div>

          <div class="imgview">

          <div class="imgview-bgtext">PhotoView</div>

          <div class="imgview-rep">PhotoView</div>

          <h2>Photogallery 01</h2>

          <ul>

          <li title="photo1"><a href="#"><strong>Photo01 Name</strong><span><img src="photo01.gif" alt="photo1" /></span></a></li>

          <li title="photo2"><a href="#"><strong>Photo02 Name</strong><span><img src="photo02.gif" alt="photo2" /></span></a></li>

          <li title="photo3"><a href="#"><strong>Photo03 Name</strong><span><img src="photo03.gif" alt="photo3" /></span></a></li>

          <li title="photo4"><a href="#"><strong>Photo04 Name</strong><span><img src="photo04.gif" alt="photo4" /></span></a></li>

          <li title="photo5"><a href="#"><strong>Photo05 Name</strong><span><img src="photo05.gif" alt="photo5" /></span></a></li>

          <li title="photo6"><a href="#"><strong>Photo06 Name</strong><span><img src="photo06.gif" alt="photo6" /></span></a></li>

          <li title="photo7"><a href="#"><strong>Photo07 Name</strong><span><img src="photo07.gif" alt="photo7" /></span></a></li>

          <li title="photo8"><a href="#"><strong>Photo08 Name</strong><span><img src="photo08.gif" alt="photo8" /></span></a></li>

          <li title="photo9"><a href="#"><strong>Photo09 Name</strong><span><img src="photo09.gif" alt="photo9" /></span></a></li>

          </ul>

          </div>

          <!--[if lte IE 6]></a><![endif]-->

          </div>

          <div class="tag2">

          <!--[if lte IE 6]><a href="#2" class="taga2"><![endif]-->

          <div class="tagname">分類二</div>

          <div class="imgview">

          <div class="imgview-bgtext">PhotoView</div>

          <div class="imgview-rep">PhotoView</div>

          <h2>Photogallery 02</h2>

          <ul>

          <li title="photo3"><a href="#"><strong>Photo03 Name</strong><span><img src="photo03.gif" alt="photo3" /></span></a></li>

          <li title="photo2"><a href="#"><strong>Photo02 Name</strong><span><img src="photo02.gif" alt="photo2" /></span></a></li>

          <li title="photo5"><a href="#"><strong>Photo05 Name</strong><span><img src="photo05.gif" alt="photo5" /></span></a></li>

          <li title="photo6"><a href="#"><strong>Photo06 Name</strong><span><img src="photo06.gif" alt="photo6" /></span></a></li>

          <li title="photo7"><a href="#"><strong>Photo07 Name</strong><span><img src="photo07.gif" alt="photo7" /></span></a></li>

          <li title="photo1"><a href="#"><strong>Photo01 Name</strong><span><img src="photo01.gif" alt="photo1" /></span></a></li>

          <li title="photo8"><a href="#"><strong>Photo08 Name</strong><span><img src="photo08.gif" alt="photo8" /></span></a></li>

          <li title="photo4"><a href="#"><strong>Photo04 Name</strong><span><img src="photo04.gif" alt="photo4" /></span></a></li>

          <li title="photo9"><a href="#"><strong>Photo09 Name</strong><span><img src="photo09.gif" alt="photo9" /></span></a></li>

          </ul>

          </div>

          <!--[if lte IE 6]></a><![endif]-->

          </div>

          <div class="tag3">

          <!--[if lte IE 6]><a href="#3" class="taga3"><![endif]-->

          <div class="tagname">分類三</div>

          <div class="imgview">

          <div class="imgview-bgtext">PhotoView</div>

          <div class="imgview-rep">PhotoView</div>

          <h2>Photogallery 03</h2>

          <ul>

          <li title="photo2"><a href="#"><strong>Photo02 Name</strong><span><img src="/jscss/demoimg/photo02.gif" alt="photo2" /></span></a></li>

          <li title="photo4"><a href="#"><strong>Photo04 Name</strong><span><img src="/jscss/demoimg/photo04.gif" alt="photo4" /></span></a></li>

          <li title="photo5"><a href="#"><strong>Photo05 Name</strong><span><img src="photo05.gif" alt="photo5" /></span></a></li>

          <li title="photo3"><a href="#"><strong>Photo03 Name</strong><span><img src="photo03.gif" alt="photo3" /></span></a></li>

          <li title="photo1"><a href="#"><strong>Photo01 Name</strong><span><img src="photo01.gif" alt="photo1" /></span></a></li>

          <li title="photo8"><a href="#"><strong>Photo08 Name</strong><span><img src="photo08.gif" alt="photo8" /></span></a></li>

          <li title="photo6"><a href="#"><strong>Photo06 Name</strong><span><img src="photo06.gif" alt="photo6" /></span></a></li>

          <li title="photo7"><a href="#"><strong>Photo07 Name</strong><span><img src="photo07.gif" alt="photo7" /></span></a></li>

          <li title="photo9"><a href="#"><strong>Photo09 Name</strong><span><img src="photo09.gif" alt="photo9" /></span></a></li>

          </ul>

          </div>

          <!--[if lte IE 6]></a><![endif]-->

          </div>

          </div>

          </body>

          </html>


          主站蜘蛛池模板: 蜜桃无码AV一区二区| 人妻在线无码一区二区三区| 无码一区二区波多野结衣播放搜索| 国产在线不卡一区二区三区| 国产一区二区在线观看麻豆| 国产在线一区二区三区在线| 亚洲日韩AV一区二区三区中文| 中文字幕人妻AV一区二区| 人妖在线精品一区二区三区| 99精品一区二区三区无码吞精| 精品深夜AV无码一区二区老年| 亚无码乱人伦一区二区| 日本一区二区三区不卡视频| 精品国产精品久久一区免费式 | 国产精品香蕉在线一区| 亚洲综合在线成人一区| 精品少妇人妻AV一区二区三区 | 精品国产一区二区三区久久影院 | 亚洲爆乳无码一区二区三区| 无码人妻一区二区三区免费n鬼沢 无码人妻一区二区三区免费看 | 高清一区高清二区视频| 一区二区不卡久久精品| 伊人色综合一区二区三区| 亚洲一区中文字幕久久| 色一情一乱一伦一区二区三欧美 | 日本一区二区三区四区视频| 一区二区精品久久| 日本精品一区二区三区在线观看| 日韩人妻精品一区二区三区视频| 中文字幕一区二区三区在线观看| 亚洲欧美日韩中文字幕一区二区三区| 精品国产一区二区三区久久影院| 亚洲第一区精品日韩在线播放| 亚洲日韩精品一区二区三区| 亚洲无删减国产精品一区| 午夜视频在线观看一区二区| 日本内射精品一区二区视频| 日韩国产精品无码一区二区三区 | 香蕉免费一区二区三区| 91精品福利一区二区三区野战| 国产成人精品一区二三区熟女 |