Скажите wget не указывать URL-адрес, соответствующий шаблону?


8

Я хочу проверить, как будет вести себя мой сайт, когда его падают. Однако я хочу исключить все URL, содержащие слово «страница». Я старался:

$ wget -r -R "*page*" --spider --no-check-certificate -w 1 http://mysite.com/

Предполагается, что -Rфлаг отклоняет шаблон URL, содержащий слово «страница». За исключением того, что это не похоже на работу:

Spider mode enabled. Check if remote file exists.
--2014-06-10 12:34:56--  http://mysite.com/?sort=post&page=87729
Reusing existing connection to [mysite.com]:80.
HTTP request sent, awaiting response... 200 OK

Как исключить паутинга такого URL?

Ответы:


10

После некоторых проб и ошибок я понимаю, что решение заключается в --reject-regexследующем:

wget -r --reject-regex page --spider --no-check-certificate -w 1 http://mysite.com/

Urlregex не должен содержать подстановочный знак и, следовательно, *page*является недействительным, но pageесть.


1

От man wget:

-R rejlist --reject rejlist
           Specify comma-separated lists of file name suffixes or patterns to
           accept or reject.

Эта опция будет отклонять только файлы, которые соответствуют шаблону.

Строго говоря, в вашем URL pageесть параметр запроса, а не последняя часть пути (например, имя файла).


Возможно, вы захотите сбросить все URL-адреса, найденные wget (например, grep log для всех загруженных URL-адресов), удалить те URL-адреса, которые вас не устраивают (например, с помощью grep -v), и, наконец, заставить wget получить оставшиеся URL-адреса. Например:

# dump the whole website
wget ... -P dump -o wget.log  ...

# extract URLs from the log file
cat wget.log | grep http | tr -s " " "\012" | grep http >urls

# excludes URLs with the word page anywhere in it
cat urls | grep -v page >urls 

# delete previous dump, since it probably contains unwanted files
rm -rf dump

# Fetch URLs
cat urls | xargs wget -x

Возможно, вы захотите добавить другие параметры wget (например, --no-check-certificate) в соответствии с вашими потребностями.


Я прочитал руководство несколько раз. Как видите, в нем написано «суффиксы или шаблоны имен файлов », поэтому не совсем понятно, должен ли шаблон быть именем файла. Тем не менее, я ищу решение, которое позволяет исключить определенный шаблон URL.
— Вопрос переполнен

@QuestionOverflow Посмотрите правку для одного примера того, как вы можете это сделать.
— hellodanylo

Ваш второй вариант будет паук весь сайт, загружая все. Тогда это загрузило бы почти все во второй раз. Было бы более эффективно загрузить все, а затем удалить части, которые вас не удовлетворяют.
— дхасенан
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.