Как скачать с помощью wget без следующих ссылок с параметрами


11

Я пытаюсь скачать два сайта для включения в CD:

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

У меня проблема в том, что это оба вики. Таким образом, при загрузке, например:

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

Я получаю много файлов, потому что он также следует по ссылкам вроде ...? Action = edit ...? Action = diff & version = ...

Кто-нибудь знает способ обойти это?

Я просто хочу текущие страницы, без изображений, без различий и т. Д.

PS:

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

Это сработало для Беркли, но boinc-wiki.info все еще доставляет мне неприятности: /

PPS:

Я получил то, что кажется наиболее релевантными страницами с:

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

Нет необходимости выполнять перекрестную запись между суперпользователем и serverfault serverfault.com/questions/156045/…
Брайан

Где я должен был это опубликовать?
Tie-fighter

это правильное место. Это не вопрос сервера.
Дэвид З

Тем не менее я получил лучшие ответы на serverfault;)
Tie-fighter

Ответы:


5

Новая версия wget (v.1.14) решает все эти проблемы.

Вы должны использовать новую опцию --reject-regex=....для обработки строк запроса.

Обратите внимание, что я не смог найти новое руководство, которое включает в себя эти новые опции, поэтому вы должны использовать команду справки wget --help > help.txt


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

( --reject-type posixпо умолчанию). Работает только для последних (> = 1.14) версий, wgetхотя, согласно другим комментариям.

Помните, что вы можете использовать --reject-regexтолько один раз за wgetзвонок. То есть вы должны использовать |в одном регулярном выражении, если вы хотите выбрать несколько регулярных выражений:

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

Может быть правдой по поводу требования к версии. У меня был v1.12, и эта опция была недействительной. После обновления до v1.15 это было.
Юньзень

Чередование регулярных выражений с использованием |символа ("pipe") не работает для меня с GNU Wget 1.16.
Сампаблокупер

0
wget -R "*?action=*"

Это исключит все, что содержится ?action=в его названии.


3
«Также обратите внимание, что строки запроса (строки в конце URL-адреса, начинающиеся с вопросительного знака ('?'), Не включаются в качестве части имени файла для правил принятия / отклонения, даже если они фактически вносят вклад в выбранное имя для локального файла. Ожидается, что в будущей версии Wget появится опция, позволяющая сопоставлять строки запроса. "
Tie-fighter

Хм, должно быть, я пропустил это. Похоже, что вы не можете сделать это с помощью wget, если он даже не знает, что это разные файлы. Я предлагаю другую программу.
Daisetsu

-3

Я бы сказал, что использование публичного вики-сайта - плохая практика, потому что это создает дополнительную нагрузку на него.

Если вики общедоступна, и владельцы сайта не против делиться контентом, они обычно предоставляют загружаемый бэкэнд (база данных или что-то еще). Таким образом, вы просто скачаете пакет данных, настроите локальный экземпляр того же вики-движка, импортируете в него данные и получите локальную копию. После этого, если вы хотите, вы можете делать пиявок на месте.


есть -w секунд. например -w 5. gnu.org/software/wget/manual/html_node/...
barlop
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.