Wget
wget 在遞歸模式下不起作用
GNU Wget 1.16 built on linux-gnueabihf
在Raspberry Pi 3
如何強制 wget 獲取整個站點(跟隨連結,像機器人一樣),而不僅僅是第一個索引?
我試過:
wget -r http://aol.com wget -r -l0 http://aol.com wget -r -m -l0 http://aol.com
每個命令都以相同的方式完成:
--2017-11-29 08:05:42-- http://aol.com/ Resolving aol.com (aol.com)... 149.174.149.73, 64.12.249.135, 149.174.110.105, ... Connecting to aol.com (aol.com)|149.174.149.73|:80... connected. HTTP request sent, awaiting response... 301 Moved Permanently Location: https://www.aol.com/ [following] --2017-11-29 08:05:42-- https://www.aol.com/ Resolving www.aol.com (www.aol.com)... 34.233.220.13, 34.235.7.32, 52.6.64.98, ... Connecting to www.aol.com (www.aol.com)|34.233.220.13|:443... connected. HTTP request sent, awaiting response... 200 OK Length: unspecified [text/html] Last-modified header missing -- time-stamps turned off. --2017-11-29 08:05:44-- https://www.aol.com/ Reusing existing connection to www.aol.com:443. HTTP request sent, awaiting response... 200 OK Length: unspecified [text/html] Saving to: ‘aol.com/index.html’ aol.com/index.html [ <=> ] 359.95K 751KB/s in 0.5s 2017-11-29 08:05:45 (751 KB/s) - ‘aol.com/index.html’ saved [368585] FINISHED --2017-11-29 08:05:45-- Total wall clock time: 2.8s Downloaded: 1 files, 360K in 0.5s (751 KB/s)
我究竟做錯了什麼?
出現您的問題是因為所有連結都
aol.com/index.html
指向不同的主機。要從所有主機遞歸下載,您可以添加選項--span-hosts
。--span-hosts '*.aol.com'
為了允許所有 aol 主機,添加該選項似乎對我有用。wget --span-hosts '*.aol.com' -r http://www.aol.com
您可以列對外連結接
grep -Po '(?<=href=")[^"]*' aol.com/index.html
您會看到其中大部分指向 www.aol.com,因此您也可以致電
wget -r http://www.aol.com
使用以下將允許
wget
以遞歸方式下載連結到網站的所有頁面。wget -r $(curl http://aol.com | grep -Po '(?<=href=")[^"]*')
將範例網站替換為您想要的網站。這會像
Deapth for search in a graph
工作方法
curl
將獲取index.html
。它將通過管道輸入grep
以通過匹配找到所有連結href
。輸入結果將wget
作為變數提供。wget
從變數中一一獲取連結。