Скрипт Human Emulator парсинга HTML-страницы с использованием XPath

В этой статье мы рассмотрим один из примеров написания скрипта для парсинга HTML-страниц с использованием XPath на примере сайта bing.com.


Сперва определимся с тем, что такое XPath и зачем оно нужно, если есть регулярные выражения?


XPath (XML Path Language) — это язык запросов к элементам XML-подобного документа (далее для краткости просто XML).

XPath призван реализовать навигацию по DOM в XML.

Regexp — формальный язык поиска и осуществления манипуляций с подстроками в тексте, основанный на использовании метасимволов.

По сути это строка-образец (шаблон), состоящая из символов и метасимволов и задающая правило поиска.

Итак, главная разница в том, что XPath специализируется на XML, а Regexp — на любом виде текста.

В: Зачем использовать XPath, если есть regexp, в котором можно сделать тоже самое?
О: Простота поддержки.

Синтаксис у regexp такой, что уже через неделю может быть проще всё переписать, чем вносить изменения,
а с XPath можно спокойно работать. И синтаксис у xpath довольно компактный,xml’ё-фобы могут быть спокойны.

Простой пример для вдохновения — получим значение атрибута «href» у, например, тега «a».

Быстро (несколько небольших страниц) пробежаться по основам XPath можно в туториале от W3Schools.

Как использовать XPath в PHP можно почитать в документации на php.net.
И в небольшом тутораильчике от IBM DeveloperWorks.

Теперь определимся с необходимым функционалом скрипта:

* Возможность указывать произвольный поисковый запрос


* Парсим только первую страницу поисковой выдачи


* Из поисковой выдачи нам нужно:


* заголовок


* ссылка


* номер в выдаче

Исходя из нашего ТЗ составляем примерный алгоритм работы скрипта:

1) Заходим на bing.com


2) Вводим поисковую фразу


3) Получаем со страницы необходимый результат

Приступим к написанию парсера поисковой выдачи http://bing.com.
Для начала, создадим базовый каркас скрипта.

В настройки добавим переменную для хранения поискового запроса.

Заходим на сайт.

Вводим поисковую фразу.

Сохраним в переменную содержимое страницы.

Настроим xpath-объект:

Теперь у объекта $xpath есть метод «query» в который мы будем передавать наше xpath-выражение.
Давайте начнём создавать xpath-выражение.
Открыв исходный код страницы с результатами поисковой выдачи увидим, что сами результаты находятся внутри тега «li».

Т.о. наше xpath-выражение выберет со страницы все поисковые результаты.

На одной странице у нас должно быть 1 или больше результатов, проверим себя:

Здесь стоит обратить внимание на ветку if, где мы сравниваем кол-во результатов xpath-поиска с нулём.
Если наше xpath-выражение ничего не нашло, то это может означать две вещи:


* Bing действительно ничего не нашёл.


* Bing что-то нашёл, но поменял вёрстку на странице, и наше xpath-выражение необходимо исправлять.

2-й пункт достаточно коварный, в таких случаях, когда xpath-выражение ничего не находит необходимо дополнительно
сверятся, чтобы удостоверится, что xpath-выражение не устарело (хотя и это не даст 100% гарантий).

В нашем случае будем сверяться с тем, что Bing пишет кол-во найденных результатов.

А если результатов по поисковому запросу нет, то:

Т.о. мы получаем такую конструкцию проверки:


— Если xpath-запрос ничего не нашёл и поисковый запрос ничего не нашёл, то на странице будет html-код с «No results found».


— Если xpath-запрос ничего не нашёл, а поисковый запрос что-то нашёл, то на странице будет html-код с «N results».

Обновим проверку результата xpath-запроса.

Если всё хорошо и что-то нашлось, то у нас в $results будет N сущностей с результатами отработки xpath-запроса.

Каждая сущность будет содержать такой HTML-код

Теперь можно приступить непосредственно к выборке интересующих нас данных.

Получаем номер в поисковой выдаче.

Получаем заголовок.

В данном случае мы в метод «query» передали вторым параметром текущий $item и в xpath-запросе не указывали «//» (т.е. искать сначала страницы).

2-й параметр означает контекст поиска для xpath-запроса, т.е. искать будем не по всей странице, а только по маленькому html-кусочку из $item.
И, наконец-то, получаем ссылку.

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

Полезные ссылки:

Wikipedia XPatch
Wikipedia Rugular expression
W3.org XPatch
W3schools XPatch
Mozilla.org XPatch
PHP.net
Ibm.com x-xpatch
Ibm.com x-xpatchphp

Скрипт написан 28.04.2015 в Human Emulator 4.9.18 Advanced.

скачать скрипт

Публикация постов на стену facebook.com с помощью Human Emulator

Это видео демонстрирует как работает скрипт для Human Emulator, который автоматически публикует записи с картинками на стену в Фейсбуке (facebook).

Сайт программы

Присоединяйтесь к нам в ВК:
https://vk.com/humanemulator
https://vk.com/xscripts
https://vk.com/club130582676

Работа с фейковыми данными в Human Emulator

Создание случайных данных пользователя для автозаполнения различных форм в интернете с помощью программы Хуман Эмулятор.

Сайт программы

Присоединяйтесь к нам в ВК:
https://vk.com/humanemulator
https://vk.com/xscripts
https://vk.com/club130582676

Курс обучения работы с программой Хуман Эмулятор. Урок 2

2-й урок.
1. Типы скриптов.
2. Написание простого скрипта публикатора.
3. Реорганизация кода с помощью функций.

Сайт программы

Присоединяйтесь к нам в ВК:
https://vk.com/humanemulator
https://vk.com/xscripts
https://vk.com/club130582676

Как удалить «собачек» из группы вконтакте, используя Human Emulator

Многие пользователи, которые имеют свои группы в Вконтакте, задаются вопросом «Нужно ли удалять собачек из группы вконтакте?». Те кто имеет опыт продвижения групп и сообществ в Вконтакте прекрасно знают, что наличие так называемых «собачек», то есть заблокированных или удалённых пользователей влияет на продвижение группы.

Откуда берутся «собчачки»? Администрация ВК борется с накрутками групп и сообществ, которую часто осуществляют с использованием, так называемых ботов. Бот — это фейковый аккаунт, который управляется программой. Вот эти, попавшие под санкции аккаунты и превращаются в «собачек», или пользователи, которые удалили свои страницы, так же становятся «собачками». И в первом и во втором случае это мёртвые аккаунты и если у Вас в группе много таких участников, то у реальных людей появятся сомнения вступать в такую группу. Та и ВКонтакте не очень жалует сообщества с «мёртвыми» подписчиками. В итоге ваша группа умирает.

Для того что бы этого не случилось нужно регулярно чистить свои группы. Хорошо если у Вас маленькая группа с небольшим количеством участников, то Вы легко справитесь и руками. Если же у Вас много больших групп и к тому же, до этого Вы не сильно задумывались об избавлении от «собачек», и в один прекрасный момент обнаружили в своих группах сотни заблокированных пользователей, тут руки уже Вам не помогут. Тут Вам поможет Human Emulator.

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

Настройки скрипта:

Сам скрипт выглядит следующим образом:

Видеоролик как работает скрипт удаления «собачек» из группы ВКонтакте

Данный скрипт будет работа и в Demo Human Emulator. Единственное,
что Вам придётся открыть Human Emulator и залогиниться в ВКонтакте руками, после чего запустить скрипт на выполнение.

Скрипт написан для Human Emulator 4.9.38 и выше.

скачать скрипт

Скрипт Human Emulator автоматического постинга в твиттер

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

Скрипт работает следующим образом: заходит в указанный аккаунт на твиттере. И из приготовленного вами файла публикует через определённый промежуток времени ваши сообщения.

На входе скрипт принимает файл с сообщениями в формате:

И всё чаще перед ними, как и перед простыми пользователями встают рутинные задачи.
Многие задачи можно решить с помощью скриптов.
Наимение затратный вариант это php-скрипты.
… и т.д.

Настройки скрипта:

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

Сам скрипт выглядит следующим образом:

Видеоролик как работает скрипт автоматической публикации твиттов в twitter.com

Скрипт написан 2.04.2013 в Human Emulator 4.6.5 Advanced.
На момент публикации статьи 04.04.2013 скрипт был рабочий.

скачать скрипт

Скрипт для нажатия «like» заглавной фотографии аккаунта из поиска Вконтакте

Скрипт для автоматического проставления «лайков» аватар пользователей страниц в Вконтакте по заданным параметрам поиска.

В этой статье мы рассмотрим скрипт для автоматического лайканья аватар пользователей в Вконтакте, по заданным параметрам поиска. Начнем, как обычно с подготовительной части и настроек скрипта:

Настройки скрипта:

для начала пропишем создание дополнительной вкладки — в ней мы будем переходить по полученным линкам на профили пользователей ВК.

получим кол-во найденных людей (число, которое выдает поисковик ВК), оно нам понадобиться для прокрутки страницы.

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

В итоге вся логика скрипта состоит из 9 пунктов:
1) переходим на сайт и авторизируемся;
2) переходим на нужную группу;
3) получаем всех пользователей группы;
4) получаем всех пользователей группы в «online»;
5) прокручиваем страницу вниз для максимальной прогрузки данных о найденных контактах (не более 1000);
7) получаем по каждому контакту ссылку на профиль;
8) используя дополнительную вкладку переходим по полученным линкам на аккаунт пользователя;
9) после перехода на страницу пользователя — кликаем по аватару и ставим лайк.

Примечания:
1. Анкеты которые «лайкались» ранее повторно не используются. При использовании анкеты, уникальный путь к ней сохраняется в папке res/ankets.txt. Соответственно если повторно эта анкета встречается в другой группе или же скрипт повторно запускается для этой же группы он предварительно проверяет лайкали ли мы ранее эту анкету. Если да, то пропускаем ее и идем далее;
2. Бываем что группа маленькая и количество онлайн-пользователей на данный момент менее 1000 — скрипт анализирует если количество подгруженных пользователей не изменно 10 скролов — вероятнее всего мы дошли до низа списка и подгрузили всех пользователей группы находящихся в режиме «online». Производится выход и скрипт переходит к следующему шагу — «лайкам» фотографий.

Видео работы скрипта автоматического нажатия «like» Вконтакте

Скрипт написан 06.12.2018 и оптимизирован под версию 7.0.26

скачать скрипт

Скрипт для Human Emulator автоматического добавления друзей в ВКонтакте

Предлагаем Вашему вниманию новый скрипт из категории автоматизация социальных сетей. В этой категории вы найдёте полезные скрипты для работы с ВК и другими социальными сетями. К примеру: автоматическое нажатие кнопки «like» в Вконтакте или автоматическая публикация записей на стену в Вконтакте. Там же лежат видео примеры как это работает.

Это скрипт автоматического добавления друзей в социальной сети Вконтакте.

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

Настройки скрипта:

Сам скрипт выглядит следующим образом:

Скрипт написан для Human Emulator 4.6.39 и выше.

скачать скрипт


Human Emulator Free!
Бесплатная версия программы Human Emulator!
Скачать программу можно тут!