2014-09-19 2 views
1

Я пишу веб-скребок, и я использую модуль WWW::Mechanize. Я выполняю сообщение и передаю недопустимые значения аргументам сообщения. Я извлекаю все ссылки с этой страницы и печатаю их в текстовый файл. Я бы сказал, что это нормально, потому что текстовый файл пуст, что означает, что страница не найдена, но моя проблема в том, что метод success() в порядке, а метод status() - 200.Передача неправильных сообщений в www :: mechanize

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

Кто-нибудь имеет представление о том, что происходит?

+2

Проверить '$ mech-> content' и' $ mech-> response-> as_string' чтобы увидеть, что сайт действительно возвращает. Он может возвращать сообщение об ошибке в HTML, но с кодом состояния HTTP 200. –

ответ

2

Независимо от того, будет ли ваш код работать, зависит от того, как целевой сайт отвечает запросам на отсутствие страниц. Если сервер обрабатывает его, отображая страницу с ошибкой, вы получите успешный ответ (200), даже если запрошенная вами страница не существует.

More information from Google on "soft 404s" - где отсутствующие страницы возвращают действительную страницу.

Вот пример из SO конфигурирования Apache, чтобы вернуть ответ 200 вместо 404:

How can I replace Apache HTTP code 404 to 200