ściągnij rekurencyjne pobieranie, ale nie chcę podążać za wszystkimi linkami


10

Próbuję wykonać kopię lustrzaną witryny za pomocą wget, ale nie chcę pobierać wielu plików, więc używam --rejectopcji wget, aby nie zapisywać wszystkich plików. Jednak wget nadal pobierze wszystkie pliki, a następnie usunie plik, jeśli pasuje do mojej opcji odrzucania.

Czy jest jakiś sposób, aby powiedzieć Wget, aby nie podążał za niektórymi linkami, jeśli pasują do jakiejś wieloznacznej powłoki? Jeśli wget nie może tego zrobić, czy istnieje jakieś inne popularne polecenie linux, które może to zrobić?


3
Proszę opublikować całe polecenie. Ułatwia rozwiązywanie problemów.
Joseph Kern

Odpowiedzi:


9

Możesz także wypróbować HTTrack, który ma, IMO, bardziej elastyczną i intuicyjną logikę włączania / wyłączania. Coś takiego...

httrack "https://example.com" -O ExampleMirrorDirectory \
"-*" \
"+https://example.com/images/*" \
"-*.swf"

Reguły zostaną zastosowane w kolejności i zastąpią poprzednie reguły ...

  1. Wyklucz wszystko
  2. Ale dołącz https://example.com/images/ *
  3. Ale wyklucz wszystko, co kończy się na swf

Czy pobierałby CSS, obrazy itp. Ze zaktualizowanymi adresami URL?
brandizzi


1

W sekcji --reject „man wget”:

„Pamiętaj, że jeśli dowolny z symboli wieloznacznych *,?, [Lub] pojawi się w elemencie acclist lub rejlist, będzie traktowany jako wzorzec, a nie przyrostek.”

Jeśli to robisz, możesz podać przykłady używanych wzorów i tego, co Twoim zdaniem powinno pasować, a to nie pasuje. Mówisz, że pasują, ale czy jesteś pewien?

Upewnij się także, że umieściłeś tę listę w cudzysłowie, aby powłoka nie rozwijała tych symboli wieloznacznych przed przekazaniem argumentów do wget.

Nawet jeśli twój system nie ma wersji 1.12, przeczytaj sekcję Typy plików w tym podręczniku tutaj . Zgodnie z dziennikiem zmian opiekun dodał pewne zastrzeżenia:

* NEWS: Added documentation change re: --no-parents, and various
caveats on accept/reject lists behavior. Rearranged some items in
order of priority.

Opcje --reject są w cudzysłowach. Widzę, że pasują do prawidłowych plików, ponieważ po pobraniu pliku wget usuwa plik. Chcę po prostu zatrzymać pobieranie pliku
Rory,

Czy to pliki htm (l)? Zgodnie z instrukcją są one pobierane bez względu na wszystko.
Kyle Brandt

Tak. pliki, które chcę odrzucić, to pliki HTML. Wiem, że są pobierane bez względu na wszystko. Czy jest jakiś sposób, aby temu zapobiec?
Rory,

1

Możesz ograniczyć poziom rekurencji za pomocą -l NUMBERopcji, jeśli to pomaga (nie przestrzegając określonego wzorca wyrażenia regularnego).

Poziom „2” pobiera index.html, jego podwitryny / obrazy / etc i linki na podstronie.


nie, to nie pomogłoby w tym przypadku
Rory,

1

jak korzystasz z wget? spróbuj użyć tego w ten sposób:

wget -r --reject=gif,jpg,swf http://norc.aut.ac.ir/

to polecenie zignoruje pliki gif, jpg i swf.


Pliki, które Rory McCann chce odrzucić, to pliki HTML, ale chce zachować inne pliki HTML, więc ta składnia nie dotyczy jego pytania.
Royce Williams

1

Jednym z obejść byłoby uruchomienie wget przez serwer proxy. Ustaw proxy tak, aby nie zezwalał na określone wzorce. To przede wszystkim zablokowałoby wgetowi ich pobieranie.

wget pobierze i usunie plik pasujący do wzorca -R. może również pasować do wzorów, a nie tylko rozszerzeń lub części nazw plików. Jednak to nie powstrzymuje wget przed pobraniem i późniejszym usunięciem.

httrack ma kilka fajnych funkcji, ale z mojego doświadczenia wynika, że ​​sposób, w jaki zapisuje „plik”, może być nieco dziwaczny, np. jeśli httrack natrafi na index.asp? Type = BASIC & PAGEID = 2234234
może go zapisać, ale musisz powiedzieć mu, aby zachował części zapytania,
np.% h% p /% n% [TYP: @TYPE = ::]% [PAGEID: PAGEID = ::].% t
@ jest symbolem zastępczym znaku zapytania, możesz później zmienić nazwę plików, a może zamiast tego uciec od znaku zapytania? problem polega na tym, że.% t doda „.html” na końcu twojego identyfikatora URI, który pierwotnie nie miał „.html”. A jeśli go zdejmiesz, obrazy, które pobiera httrack, nie będą miały rozszerzenia pliku.

Lepiej skorzystać z wget IMHO

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.