Гость

Нажмите для авторизации/регистрации

  • Назад
  • Меню
  • Статьи
    • Все
    • Интернет и технологии
    • Laravel и WebDev
    • Linux, Windows, Docker, Etc
    • Новости
    • Прочее
    • Геймдев
    • Смотри как я умею
  • Информация
    • Оферта на дополнительные функции
    • Политика конфиденциальности
    • Тарифы
    • Пользовательское соглашение

Парсинг и создание ботов - ZennoPoster, Python, PHP

  1. Главная
  2. Статьи
  3. Laravel и WebDev
  4. Парсинг и создание ботов - ZennoPoster, Python, PHP
Парсинг и создание ботов - ZennoPoster, Python, PHP
  • 27/12/2021
  • Chebukin Pavel
  • 1047 просмотров
  • 0 комментариев

Парсинг и создание ботов - ZennoPoster, Python, PHP

Что такое парсинг и бот-системы/сети?

Парсинг это получение данных в автоматическом режиме с сайта-донора. По сути этим занимаются или отдельные парсеры, или целые бот-системы. К примеру, гугл использует, как и другие поисковики целую свою сеть ботов. Часть из них получает ссылки, часть переходит по ним и анализирует содержимое. Задачи по парсингу встречаются чаще чем хотелось бы.

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

Для себя я разделил их на два вида:

  • Ситуативные - один раз использовали и может периодически запускаем
  • Постоянно работающие

Ситуативные  нужны тогда когда данные с одного сайта нужно скачать единожды и возможно время от времени обновлять. Для таких целей иногда используют Python. Но как по мне это трудоемкий процесс, хоть и дешевле. Куда более мощный инструмент и намного удобнее, это ZennoPoster. В большинстве ситуаций для меня это инструмент парсинга №1. Дальше объясню почему.

ZennoPoster - для ситуативного парсинга

Незаметность/Неотличимость от обычных пользователей

Как вы можете понять по названию, речь об обходе капчи и других систем идентификации автоматики. Строя бот-систему мы изучали много разных вариантов как скрыть пользователя, сделать его уникальным и наоборот, подать как обычного рядового пользователя. Последний вариант наиболее успешен, ведь уникальный пользователь изначально подпадает под подозрения автоматики. В Зенопостере вы можете визуальными средствами задать профиль, а сам инструмент построен на базе обычного браузера, с JavaScript и прочим. Выявить такого пользователя уже сложнее. Подключение прокси штука не сложная, но сами по себе они вас больше раскрывают чем, прячут. Вполне логично что кроме вас купить пакет прокси могут и сотрудники корпорации. В итоге одним или несколькими платежами палится вся сеть прокси. Не можете создать свои прокси, тогда покупные это вариант лишь для самых простых случаев. Но мы отвлеклись.

Гибкость и расширяемость

В нашей системе мы использовали клиент-серверную архитектуру, где раздачей задач и цепочек действий занимался сервер. Бот же выполнял необходимый набор действий. При этом куки можно было сохранить вместе с профилем пользователя и снова его загрузить. Все это прогревало профиль пользователя и на целевой сайт он мог идти уже не с пустым браузером. Расширяемость же в том, что кроме работы со списками, таблицами, базами данных и прочими встроенными инструментами, вам доступно расширение языком C# и подключением внешних библиотек. Так, мы использовали в другом случае OCR(систему распознавания текста на картинках), для распознавания номеров.

Стоимость

Тут скорее минус, так как он платный и стоит немало. Но если работать профессионально оно того стоит. А если попасть на скидки, которые бывают каждые пол года, то можно снизить его стоимость до 50%. С какой версии начинать, зависит от вас. Для разовых случаев хватит и Project Maker-а, который нужен для создания и отладки шаблона. Можно даже не запускать сам ZennoPoster. Когда вам нужно уже многопоточный режим, тогда уже стоит брать более дорогие версии.

Документация и примеры

Есть форум, есть официальная документация и несколько примеров. В целом обучение не очень сложное. А кроме парсинга можно автоматизировать много других задач в сети.

Результат можно спокойно залить csv файлом в целевую систему, создав там нехитрый импорт. ZennoPoster можно купить по ссылке.

Для постоянного парсинга - построение более сложной системы.

Такие системы уже более сложные и хоть можно использовать зенопостер, но в целом предпочтительнее использовать уже другой подход. Использовать Selenium и другие надстройки над движком браузера, прогонять страницы и парсить результаты. Системы защиты от таких парсеров разные, вплоть до динамического изменения классов и названий на странице как в HTML, так и в CSS, и JS. Используются капчи, проверка юзер-агента, айпи адресов и вплоть до косвенных признаков. К примеру маловероятно что используя Google DNS указывающий что вы из Европы, вы будете подозрительно выглядеть с IP адресом из США. При этом использование TOR автоматом делает вас подозрительным для практически всех систем.

Такие парсеры уже делают на Python, PHP, NodeJS с добавлением предназначенных для этого библиотек. Получение элементов происходит по XPath, Query Selector-у и регулярным выражениям для поиска подходящих ключевых слов на странице. 

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

 

Отзывы

Пока нет комментариев


Для того чтобы оставить комментарий, авторизуйтесь.
Понравился материал? Поделись!
CKEditor 4 + Загрузка картинок в Laravel
Ноя28
CKEditor 4 + Загрузка картинок в Laravel

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

  • Chebukin Pavel
  • 0
  • 28.11.2021 22:38
Проблема с просмотром больших XML/YML файлов?
Ноя28
Проблема с просмотром больших XML/YML файлов?

Вы, как и я, столкнулись со сложностью того, что сайт через API отдает большой XML файл? Хорошо когда есть документация, но часто ее нет, или она не полная, или вообще не актуальная. Нужно посмотреть что внутри файла. И вот тут сталкиваемся со сложностью, большая часть редакторов кода и текстовых редакторов...

  • Chebukin Pavel
  • 0
  • 28.11.2021 23:24
Сайтмап для сайта на Laravel - sitemap.xml
Ноя25
Сайтмап для сайта на Laravel - sitemap.xml

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

  • Chebukin Pavel
  • 0
  • 25.11.2021 22:05
Онлайн-песочницы для кода
Дек18
Онлайн-песочницы для кода

Когда возникает потребность проверить какой-то простенький алгоритм или набросать элемент, использовать для этого файлы рабочего проекта или создавать новый не лучшая идея. Именно по этой причине сейчас существуют всякого рода песочницы. Один позволяют скомпилировать код системных языков и вывести результат, другие набросать HTML+CSS+JS схемку и отладить ее. В любом случае,...

  • Chebukin Pavel
  • 0
  • 18.12.2021 21:33
LaraDock или Homestead для разработки под Laravel?
Ноя25
LaraDock или Homestead для разработки под Laravel?

В этом материале не будет подробностей по установке Laradock или Homestead. В нем я опишу лишь то, что по моему мнению стоит ставить. Если будет спрос, опишу установку отдельным материалом. Те кто изучают ларавел, вполне могут испугаться еще и докера, да и хомстеда. Мол, я еще это не выучил, а еще и...

  • Chebukin Pavel
  • 0
  • 25.11.2021 20:28
Laravel + TinyMCE
Дек02
Laravel + TinyMCE

Какой сайт сейчас может обойтись без редактора? Да, можно добавить поля типа file и загружать. Но когда в материале нужен целых несколько картинок, то это неудобно и не технологично. Но чтобы редактор умел загружать картинку, как редактор должен знать как ее отправить, так и серверная часть знать то, как ее...

  • Chebukin Pavel
  • 0
  • 02.12.2021 20:06

Copyright 2023 © All rights reserved.

Мы в: