Урок №31. Обработка блокировок со стороны сайта источника

Бывают случаи, когда настроенная кампания, собирает явно меньше данных, чем должна, или вообще ничего не выгружает. Есть две наиболее распространенные причины: блокировка со стороны сайта либо некорректная настройка сбора ссылок. В данном видео мы покажем как выяснить в чем именно заключается проблема и как ее решить.


Напомним, что в Datacol Вы так-же найдете уже готовые парсера:

Текст видео (если Вам проще воспринимать информацию после прочтения) »

Запустим базовую кампанию. Видим, что кампания завершена, а данные не найдены. Итак, первым делом проверяем логи кампании. При проверке стоит сразу прокрутить логи вниз к последним. Если в них видны ошибки загрузки, особенно если это ошибка таймаут загрузки либо ошибка 403, то скорее всего сайт заблокировал ваш IP адрес. Наиболее популярное решение — использовать прокси.

Прокси задаются в формат IP адрес порт, разделенные двоеточием, либо IP адрес, порт, логин, пароль. Это зависит от того, как вам предоставляет их провайдер прокси. Подробнее о прокси можно почитать у нас на сайте. Там же есть рекомендации где купить прокси.

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

Однако бывают случаи, когда ошибок загрузки в логе нет. В данном случае проблема может быть опять же связана с блокировкой со стороны сайта либо некорректной настройкой сбора ссылок. Ключом к выяснению причины является поиск в логе страниц, на которых Datacol ни обнаружил ни ссылок, ни данных. Однако сейчас их нет смысла искать, ведь даже если мы найдем в логе такую запись — то мы не будем уверены что при открытии страницы в браузрее она будет иметь тот же вид, который имела, когда ее открыл Datacol. Чтобы узнать что же увидел Datacol, включим кеширование страниц и запустим парсинг повторно.

Обратите внимание, что перед этими мероприятиями для чистоты эксперимента лучше очистить кеш.

Дождемся когда парсинг завершится. Откроем логи и введем в фильтр “…”. Итак, мы обнаружили страницу, на которой ни найдено ни ссылок ни данных. Теперь посморим как выглядела страница, когда ее загружил Datacol.

Видим. Сразу оговоримся если вид страницы не свидетельствует о том, что сайт нас заблокировал, то проблема наверняка в настройке сбора ссылок, скорее всего в настройке сбора ссылок пагинации. В данном случае нам нужно всего лишь донастроить кампанию, в частности добавив xpath или регулярное выражения для сбора ссылок с той страницы, с которой они должны быть собраны, но на деле не собираются. По данной теме — советуем изучить видеоурок 1, 2 и 16. В редких случаях бывает такое, что xpath или регулярные выражения для сбора ссылок подобраны правильно, но нам нужно сменить загрузчик на браузер. Если это помогло, то новых xpath или регулярных выражений для сбора ссылок добавлять не нужно. Ведь дом модель, загруженная браузером и стандартным загрузчиком может несколько отличаться. Подробнее об этом в уроке №19.

Теперь вернемся к нашему случаю. У нас налицо блокировка со стороны сайта. Как быть в данной ситуации? Естественно для начала установим прокси.

Но давайте задумаемся, что должен сделать Datacol. Он должен идентифицировать, что страница загружена некорректно и повторно поставить в очередь. Таким образом, при парсинге через прокси повторная загрузка этой страницы будет осуществляться уже через другой прокси, который скорее всего не заблокирован сайтом.

Итого, помимо установки прокси, мы должны задать правила, которые позволят Datacol определить валидно ли загружена страница. Для этого мы выполним следующие мероприятия. Во-первых зададим настройки валидности.

Освежим память на предмет того что такое Regex валидных и невалидных. Вспомним, что написано в справке.

Regex валидных — это список регулярных выражений, которым должен соответствовать код загруженной страницы. Если он не соответствует хотя бы одному из этих выражений, то считается, что страница загружена с ошибкой.

Regex невалидных — это Список регулярных выражений, которым должен НЕ соответствовать код загруженной страницы. Если он соответствует хотя бы одному из этих выражений, то считается, что страница загружена с ошибкой.

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

Итак вставим, заранее подобранный regex валидных для данного сайта.

Если у вас все же не получилось самостоятельно задать настройки валидной загрузки, вы можете обратиться к нам. Для тех кто не знаком с регулярными выражениям, они все же отличаются от строк. Советуем с ними ознакомиться поближе. Видеоурок №20 в помощь.

Стоит упомянуть, что при использовании прокси всегда рекомендуется настраивать Regex валидных, поскольку прокси штука непредсказуемая. Некоторые из них могут быть в черном списке какого либо сайта и в ответ на них будет выдаваться контент страницы блокировки. Соответственно Regex валидных в данном случае нас подстрахует.

Однако валидность это еще не все. Нужно сделать так, чтобы неверно загруженная страница возвращалась в очередь.

Установим максимальное количество возвратов 20 для того, чтобы страница внезависимости от возможных проблем с наличием некачественных прокси, загрузилась корректно. Также рекомендуем установить опцию Максимум ошибок до остановки. Таким образом, в случае если сайт заблокировал все наши прокси, парсинг через некоторое время (в частности когда подряд произойдет 50 ошибок загрузки) просто остановится. В целом значение этой опции рекомендуем делать равным количеству используемых проксей.

В следующих видео мы покажем какие средства Datacol помогут сделать серфинг по сайту более естественным и соответственно избежать блокировки или хотя бы отсрочить ее.