- Как заказать парсер сайта
- Видеоинструкции по настройке
- Возможности программы-парсера
- Действия в парсере
- Раздел «Работа с HTML»
- Раздел «Текстовые»
- Раздел «Перекодировка и форматирование»
- Раздел «Проверка и сравнение»
- Раздел «Разное»
- Раздел «Функции массива»
- Раздел «Числовые»
- Раздел «Работа с переменными»
- Раздел «Листы и книги Excel»
- Раздел «Обработка файлов из папки»
- Раздел «HTTP запрос»
- Раздел «Internet Explorer»
- Раздел «Управление парсером»
- Раздел «Веб-запросы, XML, макросы VBA»
- Недокументированные действия
- Работа с браузером (Chrome и т.п.)
- Отключенные (устаревшие) действия
- Интерфейс программы
- Использование браузера
- Ошибки при парсинге
- Вывод массива значений в одну ячейку
- Обход защиты Qrator, Incapsula и CloudFare
- Ошибка: сервер не ответил за 9 секунд
- Парсер перезаписывает данные в первой строке листа
- Невозможно запустить макрос, - нет доступа к проекту VBA
- Ошибка Compile error in hidden module
- Ошибка загрузки страницы по HTTPS (SSL Error)
- Дополнительные возможности
- Зарезервированные переменные и подстановочные коды парсера
- Кеширование страниц в парсере
- Переменные в парсере
- Обновление строк в существующей таблице при парсинге
- Переключение между наборами настроек в парсере
- Запуск мониторинга цен по расписанию
- Запуск парсера по расписанию
- Программный запуск парсера из внешнего макроса
- Доп. опции парсера (файл parser.ini)
- Наборы действий
- Прочие статьи по настройке парсера
- Коды останова парсера, и перехода на другое действие
- Плагины для парсера
- Запуск нескольких парсеров по очереди
- Обработка капчи (Captcha) в парсере
- Прокси серверы
Получить код состояния HTTP (HTTP status code) |
Код состояния HTTP — это возвращенный веб сервером результат выполнения запроса (всё ок, ошибка, редирект, и т.д.)
Подробнее о кодах состояния (и их допустимых значениях) можно почитать в Википедии
При парсинге, часто требуется получить значение кода состояния, — например, в задачах SEO, когда требуется проверить список URL на наличие недоступных страниц, или редиректов.
Например, получение кода состояния используется для проверки проиндексированных страниц из Яндекс.Вебмастера
Задача осложняется тем, что при загрузке одной страницы, сервер может возвращать НЕСКОЛЬКО разных значений кода состояния, — так, например, сначала может быть код ответа 301 (редирект), а потом 200 (всё ок), так как, по факту, выполняется последовательно 2 или более запросов.
Штатными средствами парсера для просмотра заголовков ответа сервера, мы видим только последний ответ сервера (код состояния 200, 403 или 404) — тот, который следует уже после редиректа.
Когда нам надо получить и первый код состояния (например, редирект 301 или 302), и последний (например, 200 или 404),
то в парсере следует использовать действие, выполняющее запрос с сохранением Cookies (только такие действия отключают автоматический авторедирект, выполняя все редиректы последовательно, чтобы записать Cookies при каждом из редиректов).
Таких действия в парсере всего три:
- Загрузить страницу с приёмом Cookies
- Авторизация на сайте
- Отправить HTTP запрос и получить ответ сервера (если включена опция «Сохранять Cookies»)
После выполнению любого из этих действий, в парсере становятся доступны 3 переменные, содержащие информацию о кодах состояния:
- FirstHttpStatusCode — код состояния исходный (при выполнении первого запроса)
- LastHttpStatusCode — код состояния конечный (при выполнении последнего запроса, если их было несколько)
- LastRedirectURL — URL страницы, на которую привёл последний из редиректов
Посмотрим на примере, когда переход по ссылке вызывает редирект:
Действие | Параметр | Значение |
---|---|---|
Загрузить страницу с приёмом Cookies | URL | |
Создать новый экземпляр WinHttpRequest | нет | |
Кодировка веб-страницы | ||
Задать новое значение | Новое значение | Первый код состояния: %FirstHttpStatusCode%{NL}Последний код состояния: %LastHttpStatusCode%{NL}URL редиректа: %LastRedirectURL% |
Сохранить результат в переменную | ||
Использовать новое значение | да |
Исходное значение | Результат | |
---|---|---|
http://excelvba.ru/EducatedFool |
Первый код состояния: 303 Последний код состояния: 200 URL редиректа: http://ExcelVBA.ru/about/author |
Другой пример (где страница по ссылке доступна, никаких редиректов нет):
Действие | Параметр | Значение |
---|---|---|
Загрузить страницу с приёмом Cookies | URL | |
Создать новый экземпляр WinHttpRequest | нет | |
Кодировка веб-страницы | ||
Задать новое значение | Новое значение | Первый код состояния: %FirstHttpStatusCode%{NL}Последний код состояния: %LastHttpStatusCode%{NL}URL редиректа: %LastRedirectURL% |
Сохранить результат в переменную | ||
Использовать новое значение | да |
Исходное значение | Результат | |
---|---|---|
http://excelvba.ru/programmes/Parser |
Первый код состояния: 200
Последний код состояния: 200
URL редиректа: |
Если же мы используем для загрузки страницы действие, работающее без сохранения Cookies, — то мы НЕ получим информацию о редиректе:
Действие | Параметр | Значение |
---|---|---|
Загрузить ИСХОДНЫЙ КОД веб-страницы | URL | |
Кодировка веб-страницы | ||
Загружать все страницы результатов | ||
Кеширование | ||
Задать новое значение | Новое значение | Первый код состояния: %FirstHttpStatusCode%{NL}Последний код состояния: %LastHttpStatusCode%{NL}URL редиректа: %LastRedirectURL% |
Сохранить результат в переменную | ||
Использовать новое значение | да |
Исходное значение | Результат | |
---|---|---|
http://excelvba.ru/EducatedFool |
Первый код состояния:
Последний код состояния: 200
URL редиректа: |
Если же мы используем действие «Загрузить исходный код веб-страницы» с опцией загрузки «direct», то кодом последнего состояния будет текст ok или err, в зависимости от того, загрузилась страница, или нет:
Действие | Параметр | Значение |
---|---|---|
Загрузить ИСХОДНЫЙ КОД веб-страницы | URL | |
Кодировка веб-страницы | direct | |
Загружать все страницы результатов | ||
Кеширование | ||
Задать новое значение | Новое значение | Первый код состояния: %FirstHttpStatusCode%{NL}Последний код состояния: %LastHttpStatusCode%{NL}URL редиректа: %LastRedirectURL% |
Сохранить результат в переменную | ||
Использовать новое значение | да |
Исходное значение | Результат | |
---|---|---|
http://excelvba.ru/ |
Первый код состояния:
Последний код состояния: ok
URL редиректа: |
Действие | Параметр | Значение |
---|---|---|
Загрузить ИСХОДНЫЙ КОД веб-страницы | URL | |
Кодировка веб-страницы | direct | |
Загружать все страницы результатов | ||
Кеширование | ||
Задать новое значение | Новое значение | Первый код состояния: %FirstHttpStatusCode%{NL}Последний код состояния: %LastHttpStatusCode%{NL}URL редиректа: %LastRedirectURL% |
Сохранить результат в переменную | ||
Использовать новое значение | да |
Исходное значение | Результат | |
---|---|---|
http://unavailable.domain/ |
Первый код состояния:
Последний код состояния: err
URL редиректа: |
- Добавить комментарий
- 3463 просмотра