Jak pobrać wszystkie pliki (ale nie HTML) ze strony internetowej za pomocą wget?

162

Jak korzystać wgeti pobrać wszystkie pliki ze strony internetowej?

Potrzebuję wszystkich plików oprócz plików stron internetowych, takich jak HTML, PHP, ASP itp.

Aniruddhsinh
źródło
Nawet jeśli chcesz pobrać php, nie jest to możliwe za pomocą wget. Za pomocą wget możemy uzyskać tylko surowy HTML. Myślę, że znasz powód
Venkateshwaran Selvaraj
NB: Zawsze wget --spidernajpierw sprawdzaj u siebie i zawsze dodawaj -w 1(lub więcej -w 5), aby nie zalać serwera drugiej osoby.
izomorfizmy
1
Jak mogę pobrać wszystkie pliki PDF na tej stronie? pualib.com/collection/pua-titles-a.html
Stack Overflow to witryna zawierająca pytania dotyczące programowania i programowania. To pytanie wydaje się być niezwiązane z tematem, ponieważ nie dotyczy programowania ani programowania. Zobacz, o jakie tematy mogę zapytać w Centrum pomocy. Być może lepszym miejscem do zadawania pytań będzie Super User lub Unix & Linux Stack Exchange . Zobacz też Gdzie mogę zadawać pytania dotyczące operacji deweloperskich?
jww

Odpowiedzi:

262

Aby filtrować według określonych rozszerzeń plików:

wget -A pdf,jpg -m -p -E -k -K -np http://site/path/

Lub, jeśli wolisz długie nazwy opcji:

wget --accept pdf,jpg --mirror --page-requisites --adjust-extension --convert-links --backup-converted --no-parent http://site/path/

Spowoduje to odbicie witryny, ale pliki bez jpgpdf rozszerzenia lub rozszerzenia zostaną automatycznie usunięte.

Zsolt Botykai
źródło
17
Jeśli chcesz po prostu pobierać pliki bez całej architektury katalogów, możesz użyć opcji -nd .
diabloneo
4
co oznacza każda z flag?
Jürgen Paul
Myślę, że --acceptrozróżniana jest --accept pdf,jpg,PDF,JPG
wielkość
8
nie jestem pewien, czy jest to nowa wersja, wgetale musisz określić --progresstyp, np.--progress=dot
jamis
@Flimm możesz również użyć --ignore-caseflagi, aby nie --acceptrozróżniać wielkości liter.
Surowy
84

Spowodowało to pobranie całej witryny dla mnie:

wget --no-clobber --convert-links --random-wait -r -p -E -e robots=off -U mozilla http://site/path/
izilotti
źródło
20
+1 dla -e robots=off! To w końcu rozwiązało mój problem! :) Dzięki
NHDaly
12
--random-waitOpcja jest geniuszem;)
poitroae
2
@izilotti Czy właściciel witryny może dowiedzieć się, czy WGOTUJESZ pliki ich witryn za pomocą tej metody?
Elias7
1
@whatIsperfect To zdecydowanie możliwe.
Jack
1
@JackNicholsonn Skąd będzie wiedział właściciel witryny? Używanym agentem była Mozilla, co oznacza, że ​​wszystkie nagłówki zostaną wprowadzone jako przeglądarka Mozilla, a zatem wykrycie wget jako używanego nie będzie możliwe? Popraw, jeśli się mylę. dzięki
KhoPhi
63
wget -m -p -E -k -K -np http://site/path/

strona man powie ci, co robią te opcje.

wgetbędzie podążał tylko za linkami, jeśli nie ma linku do pliku ze strony indeksu, wgetnie będzie wiedział o jego istnieniu, a tym samym go nie pobierze. to znaczy. dobrze jest, jeśli wszystkie pliki są połączone na stronach internetowych lub w indeksach katalogów.

Jesse
źródło
Dziękuję za odpowiedź :) Kopiuje całą stronę i potrzebuję tylko plików (tj. Txt, pdf, obraz itp.) Na stronie
Aniruddhsinh
25

Próbowałem pobrać pliki zip, do których linki znajdują się na stronie z motywami Omeki - całkiem podobne zadanie. To zadziałało dla mnie:

wget -A zip -r -l 1 -nd http://omeka.org/add-ons/themes/
  • -A: akceptuje tylko pliki zip
  • -r: recurse
  • -l 1: jeden poziom w głąb (tzn. tylko pliki bezpośrednio linkowane z tej strony)
  • -nd: nie twórz struktury katalogów, po prostu pobierz wszystkie pliki do tego katalogu.

Wszystkie odpowiedzi z -k, -K, -Eetc opcje chyba nie bardzo rozumie pytanie, jak te za przepisywanie stron HTML, aby lokalną strukturę, zmienianie nazw .phpplików i tak dalej. Nieistotne.

Aby dosłownie pobrać wszystkie pliki z wyjątkiem .html itp:

wget -R html,htm,php,asp,jsp,js,py,css -r -l 1 -nd http://yoursite.com
Steve Bennett
źródło
2
-Ajest rozróżniana -A zip,ZIP
wielkość
7

Możesz spróbować:

wget --user-agent=Mozilla --content-disposition --mirror --convert-links -E -K -p http://example.com/

Możesz również dodać:

-A pdf,ps,djvu,tex,doc,docx,xls,xlsx,gz,ppt,mp4,avi,zip,rar

zaakceptować określone rozszerzenia lub odrzucić tylko określone rozszerzenia:

-R html,htm,asp,php

lub aby wykluczyć określone obszary:

-X "search*,forum*"

Jeśli pliki są ignorowane dla robotów (np. Wyszukiwarek), musisz dodać również: -e robots=off

kenorb
źródło
5

Spróbuj tego. U mnie to zawsze działa

wget --mirror -p --convert-links -P ./LOCAL-DIR WEBSITE-URL
Suneel Kumar
źródło
5
wget -m -A * -pk -e robots=off www.mysite.com/

spowoduje to pobranie wszystkich typów plików lokalnie i wskaże je z pliku html i zignoruje plik robots

Abdalla Mohamed Aly Ibrahim
źródło
2

W systemach Windows, aby uzyskać wget możesz

  1. pobierz Cygwin
  2. pobierz GnuWin32
ebinx
źródło