Pobieranie wszystkich plików ze strony internetowej za pomocą curl

Odpowiedzi:

124

Użyj wgetzamiast tego. Możesz go zainstalować, brew install wgetjeśli zainstalowałeś Homebrew lub sudo port install wgetMacPorts.

Aby pobrać pliki z listy katalogów, użyj -r(rekurencyjne), -np(nie podążaj za linkami do katalogów nadrzędnych) i -kaby linki w pobranym HTML lub CSS wskazywały na pliki lokalne (kredyt @xaccrocheur).

wget -r -np -k http://www.ime.usp.br/~coelho/mac0122-2013/ep2/esqueleto/

Inne przydatne opcje:

  • -nd (bez katalogów): pobierz wszystkie pliki do bieżącego katalogu
  • -e robots.off: ignoruj ​​pliki robots.txt, nie pobieraj plików robots.txt
  • -A png,jpg: akceptuj tylko pliki z rozszerzeniami pnglubjpg
  • -m (lustro): -r --timestamping --level inf --no-remove-listing
  • -nc, --no-clobber: Pomiń pobieranie, jeśli pliki istnieją
Lri
źródło
3
wget -r -np -k http://your.website.com/specific/directory. Sztuką jest użycie -kdo konwersji linków (obrazów itp.) Do lokalnego wyświetlania.
yPhil
brewi portnie działa dla mnie instalacja wget. Co powinienem zrobić?
Hoseyn Heydari
@HoseynHeydari: możesz użyć rudix.org do skompilowanych plików binarnych dla systemu OSX. więc musisz zainstalować rudix, a następnie użyć: sudo rudix install wget
Mamonu
Ta opcja -knie zawsze działa. Na przykład, jeśli masz dwa linki prowadzące do tego samego pliku na stronie, którą próbujesz przechwycić rekurencyjnie, wgetwydaje się, że konwertuje tylko link pierwszej instancji, ale nie drugiej.
Kun
22

curlmoże odczytywać tylko pliki pojedynczych stron internetowych, kilka linii, które masz, jest w rzeczywistości indeksem katalogu (który widzisz również w przeglądarce, jeśli przejdziesz do tego adresu URL). W użyciu curli niektóre narzędzia uniksowe magiczne, aby uzyskać pliki, których możesz użyć

for file in $(curl -s http://www.ime.usp.br/~coelho/mac0122-2013/ep2/esqueleto/ |
                  grep href |
                  sed 's/.*href="//' |
                  sed 's/".*//' |
                  grep '^[a-zA-Z].*'); do
    curl -s -O http://www.ime.usp.br/~coelho/mac0122-2013/ep2/esqueleto/$file
done

który przeniesie wszystkie pliki do bieżącego katalogu.

W przypadku bardziej rozbudowanych potrzeb (w tym pobierania kilku plików z witryny z folderami / katalogami) wget(jak już zaproponowano w innej odpowiedzi) lepszym rozwiązaniem jest.

nohillside
źródło
Dziękuję Ci. To dobre rozwiązanie i świetny przykład działania!
egelev
1
xmllint --html --xpath '//a/@href'jest prawdopodobnie lepszym parserem niż grep.
ceving
7

Patrz: http://blog.incognitech.in/download-files-from-apache-server-listing-directory/

Możesz użyć następującego polecenia:

wget --execute="robots = off" --mirror --convert-links --no-parent --wait=5 <website-url>

Objaśnienie każdej opcji

  • wget: Proste polecenie, aby wysłać żądanie CURL i pobrać zdalne pliki na nasz komputer lokalny.
  • --execute="robots = off": Zignoruje plik robots.txt podczas przeszukiwania stron. Jest to pomocne, jeśli nie otrzymujesz wszystkich plików.
  • --mirror: Ta opcja będzie zasadniczo odzwierciedlać strukturę katalogów dla podanego adresu URL. Jest to skrót, -N -r -l inf --no-remove-listingktóry oznacza:
    • -N: nie pobieraj ponownie plików, chyba że nowsze niż lokalne
    • -r: określ pobieranie rekurencyjne
    • -l inf: maksymalna głębokość rekurencji (inf lub 0 dla nieskończoności)
    • --no-remove-listing: nie usuwaj plików „.listing”
  • --convert-links: twórz linki w pobranym HTML lub CSS wskazują na pliki lokalne
  • --no-parent: nie wchodź do katalogu nadrzędnego
  • --wait=5: poczekaj 5 sekund między pobraniem. Abyśmy nie przerzucili serwera.
  • <website-url>: To jest adres strony internetowej, z której można pobrać pliki.

Happy Download: buźka:

Udit Desai
źródło
3

Możesz użyć httrack dostępnego dla Windows / MacOS i instalowalnego przez Homebrew.

użytkownik242053
źródło
coś nowego dla mnie, dzięki. najlepsze jest to, że jest szybki i szybki: jedna linia. po prostu pokrój tłuszcz i unikaj śmieci.
Peter Teoh,
0

Dla tych z nas, którzy wolą korzystać z aplikacji z graficznym interfejsem użytkownika, jest niedrogi program do udostępniania DeepVacuum dla Mac OS X , który implementuje się wgetw przyjazny dla użytkownika sposób, z listą ustawień wstępnych, które mogą obsługiwać często potrzebne zadania. Możesz także zapisać własne konfiguracje jako ustawienia wstępne.

wprowadź opis zdjęcia tutaj


źródło