Grep

從網頁中過濾超連結並下載所有匹配特定模式的連結

  • May 13, 2018

我想從我們組織的圖形儲存庫網頁下載所有圖形文件。它們是 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的文件,並限制它將下載並最終保留的文件。

  1. 閱讀頁面curl
  2. 使用 過濾超連結grep。請注意,這利用了它們的格式都一致(如<a href="...")這一事實。HTML/XML 解析器真的應該用於稍微複雜一點的事情。
  3. 用 刪除超連結地址,再次grep -o過濾以grep僅提取目標具有所需副檔名和協議的連結。
  4. 下載這些生成的文件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://[^"]+'
)

引用自:https://unix.stackexchange.com/questions/189050