Как предотвратить имя файла "index.html? Replytocom = xxx" в wget - PullRequest
2 голосов
/ 16 августа 2010

Я пытаюсь удалить много странных имен файлов, таких как index.html?replytocom=653, index.html?replytocom=667 и т. Д.

Я использую код ниже:

wget -k -m -r -q -R gif,png,jpg,jpeg,GIF,PNG,JPG,JPEG,?,= -t 1 http://www.website.com/

и пробовал также

wget -k -m -r -q -R gif,png,jpg,jpeg,GIF,PNG,JPG,JPEG,?,=,replytocom -t 1 http://www.website.com/

но не повезло ..

1 Ответ

1 голос
/ 26 января 2015

В этом случае невозможно использовать rejlist, потому что документация для wget гласит:

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

Поэтому вам нужно использовать параметр --reject-regex.

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

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

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

Итак, отвечая на ваш вопрос, я предполагаю, что решение будет примерно таким:

wget --reject-regex '(.*)replytocom(.*)' (...)
...