2016-08-12 21 views
1

我使用wget從網站下載所有jpeg。wget,遞歸下載僅在網站主頁上的所有jpegs作品

我搜索了很多,這應該是這樣:

wget -r -nd -A jpg "http://www.hotelninfea.com" 

這應該遞歸-r下載文件JPEG文件-A jpg和所有文件,存儲在一個目錄中而無需重新創建網站目錄樹-nd

運行該命令僅從網站的主頁下載jpeg,而不是所有網站的全部jpeg。

我知道一個jpeg文件可以有不同的擴展名(jpg,jpeg)等,但事實並非如此,也沒有任何robots.txt的限制。

如果我從以前的命令刪除過濾器,它按預期工作

wget -r -nd "http://www.hotelninfea.com" 

這是發生在Lubuntu 16.04 64位,wget的1.17.1

這是一個錯誤或我誤解的東西?

回答

0

ewcz anwer指出我正確的方式,--accept acclist參數具有雙重作用,它定義了文件保存的規則和後續鏈接的規則。

讀深深the manual我發現這個

如果指定「 - 調整 - 擴展」,本地文件名可能有「 html的」附加到它。如果使用'-E -A.php'調用Wget,則會接受匹配的文件名'index.php',但下載時將命名爲'index.php.html',它不再匹配,所以文件將被刪除。

這樣你就可以做到這一點

wget -r -nd -E -A jpg,php,asp "http://www.hotelninfea.com" 

但當然站長也一直在使用custom extensions

所以我認爲最可靠的解決方案將是一個bash腳本,一些 像

WEBSITE="http://www.hotelninfea.com" 
DEST_DIR="." 

image_urls=`wget -nd --spider -r "$WEBSITE" 2>&1 | grep '^--' | awk '{ print $3 }' | grep -i '\.\(jpeg\|jpg\)'` 

for image_url in $image_urls; do 
    DESTFILE="$DEST_DIR/$RANDOM.jpg" 
    wget "$image_url" -O "$DESTFILE" 
done 

--spider wget不會下載頁面,只檢查它們是否存在
$RANDOM向操作系統要求一個隨機數

1

我懷疑發生了這種情況,因爲您提到的主頁包含指向http://.../something.php表單中其他頁面的鏈接,即有明確的擴展名。然後,選項-A jpeg具有從遍歷過程中刪除這些頁面的「副作用」。

也許,在這種特殊情況下有點髒的解決方法是這樣的:

wget -r -nd -A jpg,jpeg,php "http://www.hotelninfea.com" && rm -f *.php 

即只下載必要的額外的頁面,然後將其刪除,如果wget成功終止。