wget 不適用於遞迴模式

wget 不適用於遞迴模式

GNU Wget 1.16 built on linux-gnueabihfRaspberry 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)

我究竟做錯了什麼?

答案1

出現您的問題是因為所有連結都aol.com/index.html指向不同的主機。若要從所有主機遞歸下載,您可以新增該選項--span-hosts。為了允許所有 aol 主機,添加該選項似乎對我有用--span-hosts '*.aol.com'

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

答案2

使用以下命令將允許wget遞歸下載連結到網站的所有頁面。

wget -r $(curl http://aol.com | grep -Po '(?<=href=")[^"]*')

將範例網站替換為您想要的網站。這會像Deapth for search in a graph

工作方法 curl將獲取index.html.它將通過管道輸入grep以通過匹配查找所有鏈接href。輸入結果將wget作為變數給出。wget從變數中一一取得連結。

相關內容