Отказ от ответственности: возможно эта тема отчасти самореклама, "вода" и бред, но, скорее всего, это всего лишь классификация информации и опыта, накопленного за два года работы в сфере парсинга, для себя и тех, кому интересно.
Я не гонюсь за кармой, этого достаточно.
Ниже приведен небольшой пост о современном рынке сканеров/парсеров с классификацией и особенностями.
Тема
Речь идет о «пауках», или программах, собирающих информацию в Интернете.Пауки бывают разные - большинство ползет по сети, кто-то парсит торренты, кто-то - fido/ed2k и прочие интересные вещи.
Суть одна – предоставить необходимую ему информацию в удобной для заказчика форме.
К сожалению, С.
Шульга ( привратник ) переоценили эту отрасль — добыча информации — дело популярное, но тем не менее технологии ИИ там мало используются, и до автоматических советников они далеки.
В основном пауки делятся на несколько категорий, различающихся сложностью используемых методов.
Классификация
Простые сканеры Дешевые, простые скрипты, обычно на PHP, задача — стабильно загрузить сайт, сохранить в базу цены, атрибуты, фотографии и, возможно, обработать.Стоимость проектов можно посмотреть в базах данных фрилансеров; они обычно смешны.
В основном разовые проекты.
Забанены по IP или по скорости запроса.
Групповые сканеры Похожий проект я реализовал для cenugids.lv. При этом многие (50+) краулеров используют одну и ту же кодовую базу, а точнее, это один краулер с интерфейсами для нескольких источников (для cenugids.lv это были магазины).
В основном используется для сбора информации из подобных источников (форумы, магазины).
Поведенческие сканеры Это предполагает маскировку бота под человека.
Заказчик обычно требует определенной стратегии поведения — собирать информацию только во время обеденного перерыва, 2 страницы в минуту, в течение рабочей недели 3-4 дня в неделю, например.
В технических характеристиках может быть даже предусмотрен перерыв на «отпуск» и смена «версии браузера» в соответствии с релизами.
Кэширующие сканеры Технически самое громоздкое решение, используемое для парсинга чего-то размером с eBay. Обычно он состоит из нескольких частей – одна вытаскивает из исходника места, которые стоит посетить (например, для магазина это категории и страницы).
Этот процесс происходит довольно редко, потому что.
эта информация достаточно постоянна.
Далее через случайные промежутки времени паук ходит по «интересным местам» и собирает ссылки на данные (например, товары).
Эти ссылки снова обрабатываются со случайными задержками и заносятся в базу данных.
Этот процесс не периодический, он непрерывный.
Параллельно с ним проверяются старые ссылки — т.е.
допустим, раз в 5 минут мы выбираем из базы 10 закешированных товаров и проверяем, живы ли они и не изменилась ли цена и атрибуты.
В этом технически наиболее громоздком решении заказчик получает данные не о снимке источника в какой-то момент, а более-менее актуальную информацию из базы данных самого краулера.
Естественно, с датой последнего обновления.
Проблемы и методы
Обнаружение Понять, что ваш сайт скачивают, довольно просто (хотя бы посмотрев статистику).Количество запросов равно количеству страниц – что может быть заметнее? Обычно это достигается с помощью кэширующего искателя и расписаний сканирования.
Естественно, вы не можете конкурировать за трафик на целевой сайт. Бан по IP Самое простое, с чем можно столкнуться, это в начале войны с админом.
Первый выход – использовать прокси.
Обратной стороной является то, что вам нужно поддерживать свою инфраструктуру, обновлять список прокси, передавать его клиенту и следить за тем, чтобы он не вышел из строя в одночасье.
При разовых заказах это, конечно, отпадает. Хотя на реализацию такой инфраструктуры вместе с интерфейсами у меня ушла неделя.
Второй вариант — Тор.
Отличная P2P-сеть анонимизации с идеальным интерфейсом, где можно указать желаемую страну и точку выхода.
Скорость, в принципе, не так важна для решений кэширования.
Производительность неплохая - у меня есть один клиент, который до сих пор банит все точки выхода, правил iptables уже больше 9000 (на момент написания 9873), но результата все равно нет. Регистрация/авторизация Тривиальная проблема, которую можно решить по мере накопления опыта.
Авторизовался/установил куки/вошел/разобрал.
Капчи тоже ломаются.
Уходя в бесконечность Парсер может сойти с ума, если сайт каким-то образом генерирует бесконечное количество ссылок.
Например, добавление osCsid (OsCommerce SessionID)/PHPSESSID каждый раз может заставить сканер считать ссылку новой.
Я видел магазины, которые обычно генерировали псевдослучайные ссылки при обновлениях (таким образом, для поисковых систем один товар размещался на 50+ страницах с разными URL).
Наконец, баги в исходнике тоже могут генерировать неограниченное количество ссылок (например, магазин показывал следующую ссылку и +5 страниц от текущей даже где-то на 7000+ пустых страниц).
Кодировки Как ни странно, самый большой пробел — это кодировка.
cp1251? HTML-объекты? ПЯТЬ типов «пробелов» в таблице Юникода? Что, если клиент в конце запросит XML, а один неправильный символ полностью уничтожит simplexml? Мне, наверное, даже лень указывать на весь список ошибок кодировки.
Скажу сразу — при постобработке данных в моем краулере обработка кодирования занимает почти ровно половину.
Платформа
Люди любят PHP. Обычно PHP+simplexml или PHP+DOM/XPath. Xpath вообще незаменим, но у PHP-систем есть два больших недостатка — они подъедаются и отваливаются.512 мегабайт на сканер — это нормально при использовании mbstring, не говоря уже о дампе памяти просто при попытке создать тег +1 в XML. При обработке небольших сайтов это очевидно, но когда из исходника за раз выкачивается 50+ мегабайт. Поэтому, в основном, серьезные PHP-игроки уходят. Мой выбор — Питон.
Помимо XPath есть библиотеки для ed2k, kazzaa, торрентов, любых баз данных, идеальная обработка строк, скорость, стабильность и ООП.
Плюс возможность построить там свой мини-сервер для выдачи данных клиенту позволяет не класть на сервер слишком много и оставаться невидимым - например, если вы не успели забрать выдачу через 15 минут после полуночи.
, ты будешь винить себя.
Заключение
Если кому интересно, могу в отдельной статье описать методы взлома капч, обхода защиты User-Agent, анализа вывода сервера и парсинга невеб-источников.Есть вопросы? Добро пожаловать в комментарии или в личку! Теги: #парсеры #скрапинг #пауки #пауки #краулер #Чулан #веб-паук #краулеры
-
Нужен Ли Мне Программист?
19 Oct, 24 -
«Sla В Облаке»: На Что Обратить Внимание
19 Oct, 24 -
Время Первых: Краткая Рецензия На Фильм
19 Oct, 24 -
Визуальные Сценарии
19 Oct, 24