ś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ć?

Rory
źródło
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
lukecyca
źródło
Czy pobierałby CSS, obrazy itp. Ze zaktualizowanymi adresami URL?
brandizzi
6

Wygląda na to, że nie jest to możliwe w wget

Rory
źródło
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.
Kyle Brandt
źródło
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.

PEra
źródło
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.

orezvani
źródło
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

cparod
źródło