Grep
從網頁中過濾超連結並下載所有匹配特定模式的連結
我想從我們組織的圖形儲存庫網頁下載所有圖形文件。它們是 Illustrator ( .ai) 格式和 Corel Draw ( .cdr) 格式。
它們是直接超連結的(即
<a href="http://server/path-to-file.ai">...</a>
.
wget
包括直接支持此功能的功能:wget -r -A "*.ai,*.cdr" 'address-of-page-with-hyperlinks'
-r
啟用遞歸模式,因此它將下載比給定 URL 更多-A
的文件,並限制它將下載並最終保留的文件。
- 閱讀頁面
curl
- 使用 過濾超連結
grep
。請注意,這利用了它們的格式都一致(如<a href="..."
)這一事實。HTML/XML 解析器真的應該用於稍微複雜一點的事情。- 用 刪除超連結地址,再次
grep -o
過濾以grep
僅提取目標具有所需副檔名和協議的連結。- 下載這些生成的文件
wget
(或者curl
如果指定了輸出也可以使用)。另外,我們echo
是控制台的 URL。請注意,為方便起見,我們在腳本中的過濾順序與上面的順序不同。
重擊:
#!/bin/bash while read url; do # Echo URL to terminal echo "${url}" # Download files wget -q "${url}" done < <( # Get page curl -s 'address-of-page-with-hyperlinks' | \ # Filter hyperlinks grep -Po 'href="http://[^"]+\.(cdr|ai)"' | \ grep -Po 'http://[^"]+' )