網頁的頁面一般 css / js / img 這些會是相對路徑、獨立網址.. 等等, 但是想要抓下頁面時, 直接瀏覽此頁, 是可以頁面完整正常顯示的, 要如何做呢?
Linux 如何抓取網頁頁面 並 將相關連結置換 或 完整抓取下來
一般頁面抓下來時, 相對路徑的檔案, 就會抓不到, 於是就很容易頁面跑掉、某些離線應該能有的功能會無法使用, 想要將這些抓下來, 或者全部改成線上的網址, 可以使用 wget 來達成~
註: 本來想說要自己寫 code 來處理, 將 href / src 抓出來, 若不是 http / https / file / ftp :// 就要抓下來(含目錄), 或者就是要寫上路徑.. 等等, 後來想到 wget 的 mirror 功能, 果然 man wget 就找到合適的用法.
WGET 使用兩個參數來達成上述講的功能:
- --convert-links – convert all the links (also to stuff like CSS stylesheets) to relative, so it will be suitable for offline viewing.
- --page-requisites – Download things like CSS style-sheets and images required to properly display the page offline.
把網頁抓下來, 自動把路徑修復
- wget --convert-links https://blog.longwin.com.tw/
分析網頁路徑, 在 local 把相關目錄建立, 然後把 css / js / img 等等都抓下來
- wget --page-requisites https://blog.longwin.com.tw/
請問版主
CURL也有同樣的功能嗎?
CURL 我沒注意到有沒有這種功能耶, 我都沒拿 CURL 做這種事情~
謝謝版主的回應
想再請教版主一個問題
將wget redirecting到standard out
會hang住
該怎麼解決這問題呢?
他在抓的時候會去解析, 那並不是 hang 住, 你等他一下, 它解析完就會開始抓 css / js .. 那些東西下來.
版主
剛剛試一下
同一網頁
如果是存成file
速度很快
但是redirecting到standard out
就停好久
等了半天也出不來 .....