웹 페이지의 하이퍼링크를 필터링하고 특정 패턴과 일치하는 모든 하이퍼링크를 다운로드합니다.

웹 페이지의 하이퍼링크를 필터링하고 특정 패턴과 일치하는 모든 하이퍼링크를 다운로드합니다.

우리 조직의 그래픽 저장소 웹 페이지에서 모든 그래픽 파일을 다운로드하고 싶습니다. 그들은 일러스트레이터입니다(.ai) 형식 및 Corel Draw(.cdr) 형식입니다.

이들은 직접 하이퍼링크로 연결됩니다(예 <a href="http://server/path-to-file.ai">...</a>: .

답변1

wget이를 직접 지원하는 기능이 포함되어 있습니다.

wget -r -A "*.ai,*.cdr" 'address-of-page-with-hyperlinks'

-r재귀 모드를 활성화하여 지정된 URL 이외의 파일을 다운로드하고 -A최종적으로 다운로드 및 유지되는 파일을 제한합니다.

답변2

  1. 이 페이지를 읽어보세요curl

  2. 하이퍼링크로 필터링합니다 grep. 이는 형식이 일관적이라는 사실을 활용합니다(예: <a href="...". 하나HTML/XML 파서진짜사용해야한다조금 더 복잡한 경우.

  3. Cut Hyperlink Address를 사용하고 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://[^"]+'
)

관련 정보