使用 wget 從自重定向目錄下載任意數量的文件

使用 wget 從自重定向目錄下載任意數量的文件

我需要使用 wget 從我的大學網站下載大量 pdf 文件(如果不是不可能收集和整理所有鏈接,那將是乏味的),鏈接如下:

http://example.edu/path_to_directory/directory/foobar.pdf

我正在使用以下命令:

wget -mk --no-check-certificate --load-cookies cookies.txt  http://example.edu/arbitrary_link_to_directory/directory/

不幸的是,包含 pdf 的實際目錄每個都重定向到一個錯誤頁面,而我得到的只是一堆 html 和 css 檔案。

http://example.edu/path_to_directory/directory/

會在瀏覽器中將其重定向到

http://example.edu/path_to_directory/error/error.html

是否可以使用 wget 下載所有有問題的檔案?

答案1

當我想要從一個不容易(或主動使其變得困難)的網站下載一堆文件時,我會產生一個文件 URL 列表,如下所示:

lynx -dump -listonly $URL | awk '/\.pdf/ {print $2}' > /tmp/pdflist.txt

然後,我通常會編輯文件以vi刪除我不想下載的條目,最後使用 wget 獲取所有條目:

wget --input-file=/tmp/pdflist.txt

這對於簡單的任務來說效果很好,並且通常對於中等難度的任務也足夠好......但是對於涉及解析複雜的 html 和以下鏈接(可能使用 cookie)的困難任務,我將perl使用該模組編寫一個網路機器人libwww-perl(又名輕量級水壓)。

答案2

在您的大學網站上,有一個頁面提供所有 PDF 的連結?或者你怎麼知道 PDF 檔案名稱清單?

在這種情況下,您需要編寫一個名為 scraper 的腳本,以編程方式從該頁面獲取鏈接,然後自動循環該列表並使用 wget 或其他工具下載它們。我建議使用 PHP 或 Python 來寫抓取工具。您將輕鬆管理原始網站上的最終分頁。如果使用 PHP,您可以簡單地使用以下命令下載文件

file_put_contents('destination_filename', file_get_contents('source_url');

相關內容