我得到了一本書,裡面有一張通行證,可以訪問書中大部分藝術品的高解析度掃描的數位版本。驚人的!不幸的是,所有這些內容的演示共有 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 文件中有大量範例。