如何自動下載檔案?

如何自動下載檔案?

我得到了一本書,裡面有一張通行證,可以訪問書中大部分藝術品的高解析度掃描的數位版本。驚人的!不幸的是,所有這些內容的演示共有 177 頁,每頁 8 張圖片,每張圖片都帶有 jpg zip 檔案的連結。瀏覽起來非常乏味,我希望能夠一次獲取所有文件,而不是坐下來分別單擊每個文件。

archive_bookname/index.1.htm - archive_bookname/index.177.htm 每個頁面都有 8 個指向文件的鏈接

連結到諸如<snip>/downloads/_Q6Q9265.jpg.zip, <snip>/downloads/_Q6Q7069.jpg.zip, <snip>/downloads/_Q6Q5354.jpg.zip.這不太按順序進行。我無法取得父資料夾的目錄清單/downloads/

此外,該文件位於登入牆後面,因此如果不知道如何重新建立會話訊息,使用非瀏覽器工具可能會很困難。

我研究了一點 wget 但我很困惑,不知道它是否能幫助我解決這個問題。關於如何解決這個問題有什麼建議嗎? wget 可以自動為我做這件事嗎?

答案1

您可以指定輸入 html 文件

wget -F -i <file>

所以你可以轉儲 html 檔案並循環它們
(我已經添加了相對連結的基本 url):

for i in <whereYouDumpedFiles>/*.html
do
  wget -F -B <base-url> -i $i
done

或者

您可以透過任何方法將連結轉儲到檔案(由換行符號分隔),然後執行以下操作:

wget -i <url-file>

獲取這些連結的一個好方法是:

lynx -hiddenlinks=ignore -nonumbers -listonly --dump <relevant-url> \
 | sort | uniq | sed /<regexp-pattern-of-urls-you-want>/\!d

可能在附加到「url-file」的 for 循環中

答案2

使用 python 可能會更容易。所以這是一個使用python的解決方案。如果 python 不適合您,請忽略。 :)

我假設抓取網站是合法的。

編寫一個簡單的Python腳本來循環archive_bookname/index.1-177.htm,使用它們廢棄美麗湯,使用 css 類選擇器或簡單的正則表達式匹配找到鏈接,然後使用urllib.urlretrieve()獲取文件。我就是這麼做的。

答案3

或者您可以簡單地使用 Perl 及其名為 www::mechanize 的出色模組。將一些東西放在一起非常簡單,官方 CPAN 文件中有大量範例。

相關內容