Jak pobierać za pomocą wget bez podążania za linkami z parametrami


11

Próbuję pobrać dwie witryny w celu umieszczenia na płycie CD:

http://boinc.berkeley.edu/trac/wiki
http://www.boinc-wiki.info

Problemem jest to, że są to wiki. Więc podczas pobierania za pomocą np .:

wget -r -k -np -nv -R jpg,jpeg,gif,png,tif http://www.boinc-wiki.info/

Dostaję dużo plików, ponieważ podążają one również za linkami takimi jak ...? Akcja = edycja ...? Akcja = różnica i wersja = ...

Czy ktoś zna sposób na obejście tego?

Chcę tylko bieżące strony, bez obrazów i bez różnic itp.

PS:

wget -r -k -np -nv -l 1 -R jpg,jpeg,png,gif,tif,pdf,ppt http://boinc.berkeley.edu/trac/wiki/TitleIndex

To zadziałało w Berkeley, ale boinc-wiki.info wciąż sprawia mi kłopoty: /

PPS:

Mam najbardziej odpowiednie strony z:

wget -r -k -nv  -l 2 -R jpg,jpeg,png,gif,tif,pdf,ppt http://www.boinc-wiki.info

Nie ma potrzeby przesyłania postów między superużytkownikiem a awarią serwera
Bryan

Gdzie powinienem to opublikować?
Tie-fighter

To jest właściwe miejsce. To nie jest pytanie serwera.
David Z

Nadal mam lepsze odpowiedzi na błąd serwera;)
Tie-fighter

Odpowiedzi:


5

Nowa wersja wget (v.1.14) rozwiązuje wszystkie te problemy.

Musisz użyć nowej opcji --reject-regex=....do obsługi ciągów zapytań.

Zauważ, że nie mogłem znaleźć nowego podręcznika, który zawiera te nowe opcje, więc musisz użyć polecenia help wget --help > help.txt


4
wget --reject-regex '(.*)\?(.*)' http://example.com

( --reject-type posixdomyślnie). Działa tylko dla najnowszych (> = 1,14) wersji wget, zgodnie z innymi komentarzami.

Uważaj, że wydaje się, że możesz użyć --reject-regextylko raz na wgetpołączenie. Oznacza to, że musisz użyć |jednego wyrażenia regularnego, jeśli chcesz wybrać kilka wyrażeń regularnych:

wget --reject-regex 'expr1|expr2|…' http://example.com

Może być prawdą o wymaganiu wersji. Miałem v1.12 i opcja była nieprawidłowa. Po aktualizacji do wersji 1.15 było.
Junzen

Alternatywne wyrażenia regularne za pomocą |symbolu („potoku”) nie działają dla mnie w GNU Wget 1.16.
sampablokuper

0
wget -R "*?action=*"

Wyklucza to wszystko, co zawiera ?action=jego nazwa.


3
„Zauważ też, że ciągi zapytania (ciągi na końcu adresu URL rozpoczynające się znakiem zapytania („? ”)) Nie są uwzględniane jako część nazwy pliku dla reguł akceptowania / odrzucania, mimo że faktycznie przyczyniają się do wybranej nazwy dla pliku lokalnego. Oczekuje się, że przyszła wersja Wget zapewni opcję umożliwiającą dopasowanie do ciągów zapytań. ”
Tie-fighter

Hmm, musiałem tego przegapić. Wygląda na to, że nie możesz tego zrobić za pomocą wget, jeśli nawet nie wie, że są to różne pliki. Proponuję inny program.
Daisetsu

-3

Powiedziałbym, że wypijanie publicznej witryny wiki to zła praktyka, ponieważ nakłada na nią dodatkowe obciążenie.

Jeśli wiki jest publiczna, a właściciele witryn nie mają nic przeciwko udostępnianiu treści, zwykle zapewniają zrzut do pobrania (bazy danych lub cokolwiek innego). Wystarczy pobrać pakiet danych, skonfigurować lokalną instancję tego samego silnika wiki, zaimportować do niej dane i mieć lokalną kopię. Następnie, jeśli chcesz, możesz zrobić pijawkę lokalnie.


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.