HTTP nie ma pojęcia o katalogach. Ukośniki inne niż pierwsze trzy ( http://example.com/ ) nie mają żadnego specjalnego znaczenia z wyjątkiem .. w względnych adresach URL. Jeśli serwer nie ma określonego formatu, nie ma możliwości „pobrania wszystkich plików w określonym katalogu”.
Jeśli chcesz pobrać całą witrynę, najlepiej jest rekursywnie przeglądać wszystkie linki na stronie głównej. Curl nie może tego zrobić, ale wget może. Będzie to działać, jeśli strona nie jest zbyt dynamiczna (w szczególności wget nie zobaczy linków zbudowanych za pomocą kodu JavaScript). Zacząć od wget -r http://example.com/i zajrzyj do „Opcji rekurencyjnego pobierania” i „Akceptuj / Odrzuć rekurencyjne” w podręczniku wget, aby uzyskać więcej odpowiednich opcji (głębokość rekurencji, listy wykluczeń itp.).
Jeśli witryna próbuje zablokować automatyczne pobieranie, może być konieczna zmiana ciągu agenta użytkownika ( -U Mozilla ) i ignorować robots.txt (utwórz pusty plik example.com/robots.txt i użyj -nc opcja, aby wget nie próbował pobrać go z serwera).
@Srikan wget analizuje kod HTML, aby znaleźć linki, które zawiera i rekurencyjnie pobiera (zaznacza) te linki.
Gilles
Jeśli pliki nie mają żadnych łączy wewnętrznych, pobieranie rekursywne nie powoduje pobrania wszystkich plików. Powiedzmy, że istnieje folder HTTP niektórych plików txt. Czy wget uda się pobrać wszystkie pliki. Pozwól mi spróbować po tym komentarzu
Srikan
@Srikan HTTP nie ma pojęcia katalogu. Pobieranie cykliczne oznacza następujące linki na stronach internetowych (w tym strony internetowe generowane przez serwer w celu wyświetlenia listy katalogów, jeśli serwer WWW to robi ).
Gilles
wget obsługuje ignorowanie robots.txt za pomocą flagi -e robots=off. Alternatywnie możesz uniknąć pobierania go, odrzucając go -R "robots.txt".
Ryan Krage
22
Zawsze działa dla mnie, nie zawiera elementu nadrzędnego i rekurencyjnego, aby uzyskać tylko żądany katalog.
To nie jest możliwe. Nie ma standardowego, ogólnie zaimplementowanego sposobu, aby serwer WWW zwracał zawartość katalogu do ciebie. Większość serwerów generuje indeks HTML katalogu, jeśli jest do tego skonfigurowany, ale to wyjście nie jest standardowe ani nie jest gwarantowane w żaden sposób. Możesz przetworzyć ten HTML, ale pamiętaj, że format zmieni się z serwera na serwer i nie zawsze będzie włączony.
Spójrz na tę aplikację o nazwie Site Sucker. siteucker.us . Jak oni to robią?
Foo
Analizują plik HTML i pobierają każdy znajdujący się w nim link.
Brad
Za pomocą wget lub curl?
Foo
7
@Brad: curl nie analizuje kodu HTML, ale wget robi dokładnie to (nazywane jest odzyskiwaniem rekurencyjnym).
Gilles
1
Ach, cóż, ja poprawiam! gnu.org/software/wget/manual/html_node/… OP powinien mieć świadomość, że nadal nie dostaje tego, czego szuka ... podąża tylko za linkami dostępnymi na zwróconych stronach.
Brad
2
Możesz użyć rozszerzenia Firefox DownThemAll!
Pozwoli ci pobrać wszystkie pliki z katalogu jednym kliknięciem. Jest również konfigurowalny i możesz określić typy plików do pobrania. To najłatwiejszy sposób, jaki znalazłem.
Możesz znaleźć zastosowanie do rippera strony tutaj, to pobierze wszystko i zmodyfikuje zawartość / linki wewnętrzne do użytku lokalnego. Dobry znajdziesz tutaj: http://www.httrack.com
-e robots=off
. Alternatywnie możesz uniknąć pobierania go, odrzucając go-R "robots.txt"
.Zawsze działa dla mnie, nie zawiera elementu nadrzędnego i rekurencyjnego, aby uzyskać tylko żądany katalog.
źródło
W tym przypadku,
curl
NIE jest najlepszym narzędziem. Możesz użyćwget
z-r
argument taki jak ten:Jest to najbardziej podstawowa forma i możesz również użyć dodatkowych argumentów. Aby uzyskać więcej informacji, zobacz
manpage
(man wget
).źródło
To nie jest możliwe. Nie ma standardowego, ogólnie zaimplementowanego sposobu, aby serwer WWW zwracał zawartość katalogu do ciebie. Większość serwerów generuje indeks HTML katalogu, jeśli jest do tego skonfigurowany, ale to wyjście nie jest standardowe ani nie jest gwarantowane w żaden sposób. Możesz przetworzyć ten HTML, ale pamiętaj, że format zmieni się z serwera na serwer i nie zawsze będzie włączony.
źródło
wget
lubcurl
?Możesz użyć rozszerzenia Firefox DownThemAll! Pozwoli ci pobrać wszystkie pliki z katalogu jednym kliknięciem. Jest również konfigurowalny i możesz określić typy plików do pobrania. To najłatwiejszy sposób, jaki znalazłem.
źródło
Możesz znaleźć zastosowanie do rippera strony tutaj, to pobierze wszystko i zmodyfikuje zawartość / linki wewnętrzne do użytku lokalnego. Dobry znajdziesz tutaj: http://www.httrack.com
źródło