Curl kullanarak tüm dosyaları bir web sayfasından almak


Yanıtlar:


125

Yerine wgetkullanın. brew install wgetHomebrew yüklediyseniz veya sudo port install wgetMacPorts'u yüklediyseniz, onu da yükleyebilirsiniz .

Bir dizin listesinden dosya indirmek için kullanın -r(özyinelemeli), -np(üst dizinlere olan bağlantıları takip etmeyin) ve -kindirilen HTML veya CSS’deki bağlantıları yerel dosyalara (credit @xaccrocheur) gösterin.

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

Diğer faydalı seçenekler:

  • -nd (dizin yok): tüm dosyaları geçerli dizine indir
  • -e robots.off: robots.txt dosyalarını yoksay, robots.txt dosyalarını indirmeyin
  • -A png,jpg: yalnızca uzantıları olan dosyaları kabul et pngveyajpg
  • -m (ayna): -r --timestamping --level inf --no-remove-listing
  • -nc, --no-clobber: Dosyalar varsa indirmeyi atla

3
wget -r -np -k http://your.website.com/specific/directory. İşin püf noktası -kyerel görüntüleme için bağlantıları (görüntüleri vb.) Dönüştürmek için kullanmaktır .
yPhil

brewve portbenim wget yüklemek için çalışmıyor. Ne yapmalıyım?
Hoseyn Heydari,

@HoseynHeydari: osx için derlenmiş ikili dosyalar için rudix.org adresini kullanabilirsiniz. rudix'i kurmanız ve sonra kullanmanız gerekir: sudo rudix install wget
Mamonu

Seçenek -kher zaman çalışmıyor. Örneğin, web sayfasında aynı dosyaya işaret eden iki bağlantınız varsa, yinelemeli olarak çekmeye çalışıyorsanız, wgetyalnızca ilk örneğin bağlantısını değil, ikincisini değil.
Kun

22

curlyalnızca tek bir web sayfası dosyasını okuyabilir, elde ettiğiniz satırların çoğu aslında dizin indeksidir (bu URL’ye giderseniz tarayıcınızda da görürsünüz). Kullanmak için curlve bazı Unix araçları sihir almak için dosyaları almak gibi bir şey kullanabilirsiniz

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

tüm dosyalar geçerli dizine girecektir.

Daha ayrıntılı ihtiyaçlar için (klasörler / dizinleri olan bir siteden bir sürü dosya alma dahil), wget(zaten başka bir cevapta önerildiği gibi) daha iyi bir seçenektir.


Teşekkür ederim. Bu güzel bir çözüm ve çalışma örneği sunmak harika!
egelev 21:15

1
xmllint --html --xpath '//a/@href'Muhtemelen daha iyi bir çözümleyicidir grep.
17'de

7

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

Aşağıdaki komutu kullanabilirsiniz:

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

Her seçenek ile açıklama

  • wget: CURL isteği yapmak ve uzak dosyaları yerel makinemize indirmek için basit komut.
  • --execute="robots = off": Bu sayfalar arasında gezinirken robots.txt dosyasını görmezden gelecektir. Tüm dosyaları alamıyorsanız yararlı olur.
  • --mirror: Bu seçenek temelde verilen URL'nin dizin yapısını yansıtacaktır. Bunun için bir kısayol var -N -r -l inf --no-remove-listing:
    • -N: dosyaları yerelden daha yeni olmadığı sürece geri almayın
    • -r: özyinelemeli indirme belirtin
    • -l inf: maksimum yineleme derinliği (infinite için inf veya 0)
    • --no-remove-listing: '.listing' dosyalarını silmeyin
  • --convert-links: indirilen HTML veya CSS’deki bağlantıları yerel dosyalara bağla
  • --no-parent: Üst dizine yükselme
  • --wait=5: alımlar arasında 5 saniye bekleyin. Böylece sunucuyu çökertmeyiz.
  • <website-url>: Bu, dosyaların indirileceği web sitesi URL'sidir.

Mutlu İndirme: gülen:


3

Sen kullanabilirsiniz httrack Homebrew aracılığıyla Windows / MacOS için geçerli ve yüklenebilir.


benim için yeni bir şey, teşekkürler. en iyisi hızlı ve hızlı olmasıdır: tek astarlı. Sadece yağı kesin ve tüm çöplerden kaçının.
Peter Teoh

0

Bir GUI ile bir uygulamayı tercih etmeyi tercih edenler için , wgetkullanıcı dostu bir şekilde uygulayan ve yaygın olarak ihtiyaç duyulan görevleri yerine getirebilecek ön ayarların bir listesi olan Mac OS X için ucuz bir shareware programı var . Ayrıca kendi özel yapılandırmalarınızı hazır ayar olarak kaydedebilirsiniz.

görüntü tanımını buraya girin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.