Скрипт Human Emulator сбора финансовых данных по котировкам из таблиц

Предлагаем вашему вниманию скрипт, который собирает финансовые данные по котировкам из таблиц на finance.yahoo.com.

На вход скрипт принимает символы компаний из файла /data/quotes.txt, который имеет формат:
MSFT
HPQ
INTC
CSCO
AA
ORCL
IBM
и т.д.

В результате работы скрипта создаётся csv файл в формате:
symbol;Prev Close;Open;High;Low;Close;Volume;Change

Пример результатов:

MSFT;31.17;31.08;31.19;31.06;31.14;21,996,313;0.03(0.11%)
HPQ;18.25;18.42;18.41;18.16;18.23;9,983,753;0.02(0.11%)
INTC;23.37;23.48;23.51;23.27;23.39;16,197,458;0.02(0.09%)
CSCO;19.05;19.19;19.20;18.95;19.15;15,482,231;0.11(0.55%)
AA;9.49;9.61;9.65;9.51;9.51;8,861,214;0.02(0.21%)
ORCL;33.01;33.01;33.08;32.56;32.85;12,649,463;0.16(0.48%)
IBM;207.07;207.55;207.57;206.01;206.85;1,298,211;0.22(0.11%)
и т.д.

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

Для этого скрипта, как впрочем и для любого другого, можно использовать Расписание скриптов для запуска в нужное время или нужное количество раз.
В расписании скриптов есть возможность запускать скрипт заданное количество раз, один раз, раз в минуту, раз в 5 минут, раз в 10 минут, по выбору, раз в полчаса, раз в час, раз в день, раз в неделю, раз в месяц, раз в год, бесконечно.

Расписание скриптов. Добавление задачи.

Расписание скриптов. Добавление задачи.

Расписание скриптов.

Расписание скриптов.

Можно легко переделать скрипт, для получение любых необходимых данных с finance.yahoo.com.
Поменять формат вывода данных.
Дописать скрипт, что бы он выполнял необходимый анализ данных и при нахождении нужных параметров отправлял сообщение на email.

Для более быстрой работы скрипта рекомендуется отключить картинки, java script, java, active x, звуки и видео в настройках браузера.


Сам скрипт:

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

Этот скрипт работает в Demo версии программы Human Emulator. Посмотреть все скрипты для Demo и Скачать Demo

Как исправить скрипт, если он не работает, на примере скрипта сбора котировок

Cкрипт Human Emulator парсер Яндекс Маркета

Одной из актуальных задач на сегодняшний день является парсинг товаров с Яндекс Маркета. Мы решили не обходить эту задачу стороной и написать скрипт, который собирает заданные товары и всю информацию по ним и сохраняет её в базу данных MySQL.

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

Так как данные на сайте хранятся в utf-8 формате мы использовали для разработки скрипта Unicode версию программы Human Emulаtor. Эта версия лежит рядом с exe-шником обычной версии и называется XWeb Human Emulator MT UE.exe. Входные данные для скрипта тоже используются в unicode формате. На входе скрипт принимает файл с ключевыми словами, по которым он ищет нужные вам товары в следующем формате:
ноутбук
монитор
клавиатура
мышь

В результате работы скрипта создаётся база данных с таблицей товаров markets с
колонками Ключевое слово, Наименование товара, Средняя цена, Диапазон цен, Html код картинки, Html код кратких характеристик, Html код всех характеристик.
Можно все html результаты получать в виде текста. Для этого при разборе страниц товара вместо inner html надо использовать функции которые получают inner text.
В функции get_market_info($market_key) заменить $element->get_inner_html_by_attribute на $element->get_inner_text_by_attribute.

Результат работы скрипта в MySQL Workbench :

товары собранные с Яндекс Маркета в базе данных MySQL

товары собранные с Яндекс Маркета в базе данных MySQL

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

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

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

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

Скрипт Human Emulator сбора SEO информации с сайтов.

Предлагаем вашему вниманию скрипт, который собирает данные с заданного сайта,
а именно: внутренние и внешние ссылки, и мета тэги — title, description и keywords.

В результате работы скрипта по заданному пути появляются csv файлы: inner_links.csv с внутренними ссылками,
ext_links.csv с внешними и meta_tags.csv с мета тэгами.

Формат csv файлов с ссылками:

url страницы;ссылка
http://x-scripts.com/;http://www.freecsstemplates.org/
http://x-scripts.com/;http://www.humanemulator.info/
http://x-scripts.com/;mailto:order@x-scripts.com

Формат csv файла с meta tags:
url страницы;заголовок страницы;meta tag description; meta tag keywords
http://x-scripts.com/index.php;X-Scripts всё про скрипты XHE и их применение | X-Scripts.com;Описание сайта и разделов представленных на X-Scripts.com;XHE скрипты, написание скриптов XHE, примеры скриптов под хуман, примеры скриптов, скрипты для XWeb Human Emulator бесплатно
http://x-scripts.com/scripts.php;Примеры скриптов для XHE | X-Scripts.com; Примеры скриптов для XHE на X-Scripts.com. Скачай себе скрипт для Xweb Human Emulator;примеры скриптов скачать, скачать скрипты, скрипты xhe скачать, примеры xhe скачать
http://x-scripts.com/scripts/catalogs.php;Скрипт XHE сборщик каталогов | X-Scripts.com;Скрипт XHE сборщик каталогов на .com.

мы использовали функцию $app->show_free_dlg, которая показывает диалог с настройками

мы использовали функцию $app->show_free_dlg, которая показывает диалог с настройками

На этот раз для настроек скрипта мы использовали функцию $app->show_free_dlg, которая показывает диалог с настройками. Для постройки этого диалога функция использует xml файл. Таким образом изменяя xml файл можно создать любой диалог. В результате своей работы функция возвращает строку с настройками. Мы эту строку разбираем и получаем настройки, которые ввёл пользователь в диалог.
В нашем случае пользователь вводит анализируемый сайт, папку куда складывать результаты, задаёт что именно собирать и фильтры какие страницы не обрабатывать.

Пример XML файла нашего диалога настроек:

Вызов диалога настроек в скрипте:

Для обработки вводимых пользователем настроек мы добавили специальный класс ScriptSettings:

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

Сам скрипт:

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

Этот скрипт работает в Demo версии программы Human Emulator. Посмотреть все скрипты для Demo и Скачать Demo

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

Скрипт Human Emulator сбора SEO информации о сайте.

Предлагаем вашему вниманию скрипт, который собирает SEO данные о заданном сайте. Скрипт получает PR и Тиц сайта, получается все проиндексированные страницы Яндексом и Гугль. Получает PR для каждой страницы сайта и вы водит это всё в виде html страницы с таблицами.

В результате работы скрипта открывается страница с таблицами, как указанно на рисунке ниже.

страница с таблицами seo

страница с таблицами seo

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

Можно легко переделать скрипт, что бы он выводил информацию в любом удобном для вас виде.
Или что бы проверял сразу пачку сайтов из txt файла.

Сам скрипт:

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

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

Скрипт Human Emulator cборщик DLE сайтов

Предлагаем вашему вниманию скрипт сборщик DLE (DataLife Engine) сайтов. Этот скрипт написан на основе скрипта сборщика каталогов и демонстрирует как легко можно самом переделать сборщик под любые типы сайтов. Достаточно ввести правильный запрос в Google и выбрать нужные критерии для проверки движка сайта.

Теперь рассмотрим детальнее что именно отличает этот сборщик.

Первое это поисковый запрос. Он в скрипте выглядит так:

Страница регистрации в DLE сайтах вызывается следующим запросом — http://domen.com/index.php?do=register. Значит ищем сайты где есть такие страницы.

После того как мы нашли такие страницы в Google мы проверяем их. Скрипт переходит на найденные страницы и проверяет количество элементов ввода — раз это форма регистрации то их должно быть на странице не менее 4. Для этого используем следующий код:

Если на странице есть 4 и более поля ввода мы получаем текущий url страницы и перед тем как записывать в файл проверяем, что это именно та страница которая нам нужна:

Сам скрипт:

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

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

Скрипт Human Emulator cборщик каталогов

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

Мы предлагаем вашему вниманию скрипт сборщик каталогов. Скрипт с помощью поисковой системы Google собирает в файл ссылки на каталоги. Принцип определения каталога это наличие на странице рабочей ссылки «Добавить сайт» или «добавить сайт». Если переход по ссылке совершен, значит это каталог. Так же в скрипт добавлены возможность определять есть ли в каталоге заданные темы и просит ли каталог ввести каптчу или нет. Если в каталоге нету заданной темы или он просит ввести каптчу, каталог не пишется в файл.

Теперь рассмотрим детальнее сам скрипт.

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

В файле keys.txt содержатся поисковые запросы, которые мы вбиваем в Google для поиска каталогов. Формат файла:
каталог сайтов
добавить сайт
автокаталог

В файле themas.txt лежит список тем, на которые мы проверяем каталоги. Формат файла:
авто
спорт

2. Дополнительные модули:

3. Скрипт:

Это нововведение с версии 4.4.10. Теперь не надо вызывать функцию $browser->wait_for(); после каждого клика или перехода страницы. Достаточно один раз задать в начале скрипта с помощью этой функции. Параметры в функцию передаются аналогично wait_for.описание функции wait_for

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

Вывод в окно отладки логов.

Эта часть скрипта вводит поисковый запрос в Google, а так же делает переход на нужный запрос и нужную страницу с поисковыми результатами после рестарта.

Эта часть скрипта ходит по сайтам и проверяет каталоги.

Отсортируем и удалим дубликаты из файла с результатами.

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

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

Скрипт разбора поиcковой выдачи Google

Перед нами скрипт, который собирает домены сайтов из выдачи поисковой системы google по заданным ключевым словам. Причём скрипт разбирает выдачу,
разбирая страницу и получая данные из тэгов cite. После этого берётся содержимое полученного массива ссылок и скрипт переходит на каждую ссылку из массива
и уже после перехода получает домен.

На вход скрипт принимает ключевые слова, которые заданны в текстовом файле words.txt в формате:
лучшее кино года
народ и деньги
xweb human emulator
скрипты и тесты
скрипты xhe
хлеба и зрелищ
музыка снов

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

После запуска этого скрипта в папке res появятся файлы с именами в виде ключевых слов,
в которых будут записаны урлы выдачи гугль по данным ключевым словам. Для того что бы скрипт работал быстрее можно отключить всё лишнее в настройках программы.
Картиники, js, active X, frame и т.д.

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

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

Скрипт сборщик данных RTS биржи на сайте rts.ru

Помимо регистрации и сабмита данных на различные ресурсы может встать задача по сбору каких либо данных в сети.
Предположим нам нужно собрать, обработать и сохранить данные по торгам на RTS бирже. Перейдём на сайт биржи,
где предоставляется необходимая нам информация http://www.rts.ru/ru/spot/.

Перед нами таблицы с индексами, объёмами торгов и акциями. Напишем скрипт, который будет собирать и хранить данные по индексам.

Как всегда создадим новый скрипт используя Ctrl+N и заменим http://www.google.com на http://www.rts.ru/ru/spot/.
Запустим скрипт на выполнение и перейдём на нужную нам страницу. Создадим папку RTS в папке My Scripts и, используя команду Save as…,
сохраним наш скрипт под именем rts_ru.php в только что созданную нами папку.

Примечание: При переименовании файла нужно обращать внимание на строку require(«../../Templates/xweb_human_emulator.php»);.
Это строка путь к шаблону php с объектами XHE. Если этот путь будет неправильным, скрипт работать не будет.
В папке My Scripts у скриптов эта строка задаётся как require(«../Templates/xweb_human_emulator.php»);,
так как файл xweb_human_emulator.php лежит на одну папку выше в папке Templates. Из-за того что мы создали папку
RTS и поместили туда скрипт получается что файл шаблон лежит на две папки выше. Для того что бы наш скрипт
видел этот файл мы должны добавить ../ в путь к шаблону. Если вам тяжело работать с относительным путём к
файлу шаблона вы всегда можете использовать абсолютный путь,
который будет выглядеть например как require(«C:\XWeb\Human Emulator\Templates\xweb_human_emulator.php»);.

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

Просматривая файл с результатами находим следующие строки:

24 таблица ряд 0

B>Индексы/B>

Теперь мы знаем номер нужной нам таблицы с данными. Опять, используя команду Save As…, сохраним наш текущий скрипт как get_tables.php. Пригодится. Затем закроем его и откроем скрипт rts_ru.php. Удалим из него лишнее, оставив только навигацию на нужную нам страницу.

Итак, у нас есть номера нужных таблиц. Можно найти эту таблицу через Дерево Элементов и через Элемент Инспектор посмотреть какие атрибуты у неё есть. К сожалению, кроме номера и размера с координатами ничего нет, поэтому будем работать с ними через их номера.

Примечание: Описание всех объектов и их функций можно найти на сайте humanemulator.net. Документация по объекту table находится по адресу http://humanemulator.net/objects/DOM/table.php.

При дальнейшем рассмотрении таблицы обнаружилось, что в неё вложены другие таблицы. Это затрудняет работу с ними через объект table и его функции получения рядов и колонок, поэтому будем работать через разбор полученных исходников таблиц. Для этого используем функцию get_inner_html.

Сделаем вызов этой функции для 24 таблицы и сохраним исходники в файл для дальнейшего изучения. Для этого добавим код:

Просмотрим созданный файл и выберем префиксы для разбора. Первое что нас интересует это название индекса. Он заключён в следующем коде: A class=Thurl href=»/ru/index/rtsi/»>RTSI/A> Первый префикс будет A class=Thurl href=», с помощью него мы будем находить эту строку и уже из неё вырезать название индекса. Для этого добавим следующий код:

Запустим скрипт на выполнение и получим в окне отладки название первого индекса. Так как этот код нам придётся вызывать несколько раз оформим его в функцию, в которую будем передавать строку и номер символа, с которого надо будет выполнять поиск и разбор. Этот номер символа будем изменять на последний найденный нами. Для этого перед названием передаваемого в функцию параметра ставится символ &. Функция будет выглядеть так:

Вызов функции и проверка изменения стартового номера символа в строке:

Весь скрипт будет выглядеть так:

При запуске этого скрипта он выдаст название первого индекса и изменённый стартовый номер символа для поиска и разбора.

Для удобочитаемости скриптов функции лучше сносить в отдельные файлы и их уже подключать в скрипт. Для этого через Save As сохраним текущий скрипт как functions.php в эту же папку. Теперь удалим из него всё лишнее. Файл functions.php будет выглядеть следующим образом:

Теперь закроем его и откроем опять файл rts_ru.php, в котором находится наш скрипт. Удалим оттуда всё лишнее и подключим файл function.php к нему. После всех проделанных операций наш скрипт будет выглядеть:

При запуске этого скрипта получим тот же результат что и до переноса функции в отдельный файл.

Теперь продолжим изучение исходников таблицы в файле table.txt для дальнейшего разбора данных.
Нужные нам данные помещены в следующие тэги:

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

Добавим её в файл functions.php. И сделаем вызов в нашем скрипте таким кодом:

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

Теперь нам надо добавить цикл, что бы получать данные для каждого индекса и формировать из них строку для записи в файл. После детального изучения исходного кода таблицы выяснилось, что она состоит из 8 колонок. В первой колонке, сразу за названием индекса, либо график либо ничего нет, поэтому эта колонка нам не интересна и мы её будем пропускать. Цикл организуем через оператор while следующим образом:

Для того что бы этот цикл останавливался надо добавить проверку в функцию получения названия индекса get_index_name, которая определена в файле functions.php:

Добавим запись в файл. Наш скрипт теперь будет выглядеть так:

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

После запуска этого скрипта в созданной вами папке res появится два файла один res.csv, второй типа res14-27.csv. При повторном запуске добавиться ещё один файл типа res14-29.csv и т.д. Так как данные на сайте для индексов обновляются практически каждую минуту, то можно в расписании запуска скриптов добавить запуск этого скрипта скажем каждые две минуты.

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

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

Скрипт Human Emulator парсер прокси

В этой статье мы подробно рассмотрим пример создания парсера прокси с ресурса freeproxylists.com

Прокси на этом сайте рассортированы по типам, но отображаются везде одинаково. Поэтому сделав скрипт для сохранения одного вида прокси, добавить сбор всех остальных будет очень просто. Начнём с первой ссылки:

На каждой такой странице висит около полутора десятка списков прокси, которые регулярно проверяются и пополняются. Наша задача – поочерёдно зайти в каждый список и собрать там необходимые данные. Human Emulator предоставляет много вариантов работы с различными ссылками. Лучше всего в данном случае подойдёт функция $anchor->click_by_inner_text . Работа по прямым урлам тут бесполезна, поскольку они постоянно меняются. Для работы по номеру нужна уверенность, что количество урлов на странице в течение долгого времени будет неизменным. А заморачиваться с работой по атрибутам, когда есть другие варианты, лучше не надо.

Щёлкнув правой кнопкой мышки по линку одного из списков, можно обнаружить в выпадающем меню функцию вроде $anchor->click_by_inner_text(‘elite #9′,’true’); , которую нужно добавить в скрипт вместе с $browser->wait_for(240,1); К пояснениям по этой части скрипта вернёмся позднее.

Наконец-то перед нами долгожданный список прокси. К сожалению, на этом сайте айпи и порты находятся в разных колонках, так что придётся немного повозиться, чтобы сохранить их в должном виде. Для получения данных поможет функция $webpage->get_body_inter_prefix_all();

На входе эта функция получает :

  • Первый префикс. Знак или знаки, с которых начинаются искомые данные.
  • Второй префикс. Знак или знаки, которыми закрываются искомые данные.
  • Включение/выключение отображения в найденном ХТМЛ элементов. Бывает true и false.
  • И два необязательных параметра:

  • Сдвиг получаемого текста от первого префикса на указанное число знаков. Может быть отрицательным.
  • Сдвиг получаемого текста от второго префикса на указанное число знаков. Может быть отрицательным.

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

Если выделить часть страницы с прокси и нажать «Show Selected Source», то в открывшемся исходном коде страницы можно увидеть тэг TD> , закрывающий искомые нами айпишники с портами. Таким образом, заполненная и готовая к использованию функция будет выглядеть так:

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

Теперь нужно привести данные в удобоваримый вид. Сохранив полученные функцией цифры в текстовый файл можно заметить, что всё его содержимое разделено тэгом переноса и выглядит как одна строка. Куда удобней, когда после айпишника прокси через двоеточие идёт порт, а каждая такая конструкция находится на новой строке. Для того, чтобы этого добиться, придётся обратиться к PHP.

Добавьте в скрипт следующий код:

Теперь, в окне скриптов программы у вас должен находиться следующий текст:

Давайте запустим его и проверим после отработки файл 123.txt на диске C.

Если восторг по поводу полученного результата уже закончился, продолжим. Самая сложная часть скрипта уже готова, нам осталось только настроить его для прохода по всем спискам проксей нужного нам типа на сайте. Вернёмся к восьмой строке нашего скрипта (нумерацию линий можно включить в настройках: F9, закладка «PHP редактор», галочка «Показывать нумерацию линий»). Как видите, в качестве первого аргумента для функции выступает имя списка, в котором присутствует цифра от 1 до 14. За это можно зацепиться для последовательного перехода и парсинга списков. Обернём весь наш скрипт в цикл for, в условиях которого можно задать последовательное увеличение значения переменной $ii. Эту переменную мы будем использовать для переходов к нужным спискам.

Должно получиться что-то вроде:

Вот теперь можно быть уверенными, что скрипт соберёт все списки элитных прокси с сайта, после чего запишет их в текстовый файл.

Домашние задания:

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

Пример готового скрипта:

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

Количество скачиваний: