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


7

Я пытаюсь скачать два сайта для включения в 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

Нет необходимости пересекаться между superuser и serverfault superuser.com/questions/158318/…
Брайан

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

Ответы:


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

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

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

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

2
Регулярные выражения в wget не привязываются в начале или в конце, поэтому для первого примера wget --reject-regex '\?' http://example.comдостаточно.
Стефан Гурихон

4

Документация Wget говорит:

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

Похоже, что эта функциональность уже давно на столе, и с этим ничего не было сделано.

Я не использовал его, но httrack выглядит так, как будто он имеет более надежный набор функций фильтрации, чем wget, и может лучше подходить для того, что вы ищете (о фильтрах читайте здесь http://www.httrack.com/html /fcguide.html ).


+1 за указание на httrack. Это выглядит лучше, чем wget, а wget выглядит застойным.
Стефан Ласевски

Я пробовал Winhttrack, но он ведет себя смешно. Он загружает файлы и пересекает каталоги, которые он не должен: /
Tie-fighter

Возможно, однажды wget будет исправлен. На данный момент httrack и pavuk выглядят хорошо.
joeytwiddle

3

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

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

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


1

Павук должен уметь это делать:

http://pavuk.sourceforge.net/man.html#sect39

Пример Mediawiki:

[...]

-skip_url_pattern ' oldid = , действие = редактировать , действие = история , дифф = , предел = , [/ =] Пользователь: , [/ =] обсуждения участника: , [^ р] / Special: , = Special: [^ R] , .php / Special: [^ LUA] [^ ОНЛ] [^ NUL] , MediaWiki: , Искать: , Помощь: '

[...]


1

Похоже, вы пытаетесь избежать загрузки специальных страниц MediaWiki. Я решил эту проблему однажды, избегая index.phpстраницы:

wget  -R '*index.php*'  -r ... <wiki link>

Тем не менее, вики использовал URL-адреса, как видно из Википедии ( http://<wiki>/en/Theme), а не шаблон, который я видел в других местах ( http://<wiki>/index.php?title=Theme). Поскольку ссылка, которую вы дали, использует URL в шаблоне Википедии, я думаю, что это решение может работать и для вас.


0

'-R rejlist --reject rejlist' Указать разделенные запятыми списки суффиксов или шаблонов имен файлов для принятия или отклонения (см. Типы файлов). Обратите внимание, что если в элементе acclist или rejlist появится какой-либо из подстановочных знаков '*', '?', '[' Или ']', он будет рассматриваться как шаблон, а не как суффикс.

Шаблоны, вероятно, то, что вы хотите. Я не уверен, насколько сложные шаблоны, но вы можете попытаться принять только определенные файлы или блокировать:

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

Accept:

wget -r -k -np -nv -R jpg,jpeg,gif,png,tif -A [a-zA-Z.] http://www.boinc-wiki.info/

Отредактируйте: nvm в свете другого поста.


Это работает со строками запроса? Каждая версия wget, которую я использовал, применяет только шаблоны списков отклонения к файловой части URL. Я попробую и посмотрю.
Эван Андерсон

Я не проверял это. Я просто посмотрел документацию. Я обнаружил, что он использует соглашение о оболочке, но ваш опыт говорит больше, чем мой, в отношении рабочей функции сопоставления.
Джошуа Энфилд

Спасаясь от "?" похоже, что wget не выполняет то, что хотел бы OP на моем компьютере с CentOS 5.3, на котором запущен wget 1.11.4.
Эван Андерсон
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.