Скрипт сборщик данных 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. Эту переменную мы будем использовать для переходов к нужным спискам.

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

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

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

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

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

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

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

Скрипт Human Emulator добавление новости в RSS ленту

В интернете можно легко найти «Что такое RSS», для чего он нужен и инструкции как прикрутить RSS ленту к вашему сайту. Для сайтов различных движков есть специальные плагины, которые облегчают эту задачу. После того как вы прикрутили такой плагин к своему блогу или сайту он сам добавляет последние новости в ваш rss.xml.

Но что делать если у вас простой html сайт? Тогда вы самостоятельно добавляете новости в rss.xml или же используете скрипт, который это делает за вас. Данный скрипт на примере нашей RSS ленты демонстрирует как это можно делать.

Скрипт работает следующим образом: после добавления очередной статьи или новости на сайте, мы передаём в скрипт url новой страницы. Скрипт идёт на эту страницу получает нужные данные из страницы — заголовок и описание и создаёт новый элемент в rss.xml. После чего заливает получившийся rss.xml на сайт. Всё RSS лента обновлена.

Наш RSS выглядит так:

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

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

Скрипт написан 1.10.2012 в Human Emulator 4.4.19 Advanced.
На момент публикации статьи 8.10.2012 скрипт используется для добавления наших новостей в RSS ленту.

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

Скрипт Human Emulator добавления контента на сайт.

На нашем сайте вы уже можете найти скрипт, который добавляет автоматом материалы в блог WordPress. Но как же быть если у вас обычный сайт, который использует обычный html+css. Очень просто заливать статьи на сайт через ftp.
Допустим стоит задача брать новости с заданного сайта и публиковать их у себя на сайте. Прежде всего найдём сайт донор новостей нужной тематики.
Причём найдём сайт на украинском языке, для того что бы переводить эти новости и публиковать у себя. Не забудьте проверить может быть его уже кто то переводит, а нам всё таки интересен уникальный контент.
Итак мы нашли такой сайт. Далее мы пишем разбор нужных нам страниц.
Перед этим мы уже приготовили шаблоны, по котором мы будем создавать страницы для своего сайта.
Пускай это будет сама новостная страница, страница всех новостей, и главная страница сайта.
В шаблонах мы указываем ключи для замены, как указано ниже в примере:

Не трудно догадаться, что {TITLE} — это название новости или статьи, {KEYS} — это ключи (мы их получаем из названия — берём его целиком или делим, заменяя пробелы на , ),{IMG} — это вставляемый рисунок, {BODY} — сама статья или новость, {SITE} — это источник статьи или новости его можно указывать, а можно нет.

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

Этот скрипт запускается по расписанию каждый день без малейшего вашего участия и добавляет нужный контент на сайт автоматом. На первых парах придётся понаблюдать за ним и устранить недочёты и ошибки в работе.
Когда всё встанет на рельсы вам лишь периодически нужно будет смотреть ничего ли не изменилось на сайте доноре.
Скрипт может быть легко вами изменён, можно добавить несколько доноров. Так же можно в зависимости от количества собранных уже новостей делить страницу с новостями на подстраницы 1,2,3 и т.д. Всё ограничивается лишь вашей фантазией 🙂

Ниже приведёт пример подобного скрипта:

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

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

Скрипт Human Emulator для наполнения сайта контентом, используя Google переводчик

Проект x-scripts.com решил поставить эксперимент. Суть эксперимента в следующем: наполнение сайта контентом, используя гугль переводчик. Для этого мы взяли домен и поставили туда WordPress. Темой для нашего блога выбрали самооборону. Язык блога Украинский. Подготовив всё к публикациям статей, мы в поисковике нашли источники для будущих переводов. Сайтов на русском языке про самооборону в интернете достаточно и разнообразного контента на эту тему много. Проделав все подготовительные работы мы написали скрипт, который берёт статьи с сайтов источников, переводит их с помощью Google переводчика и публикует в наш блог. Публикация в блог осуществляется через админку WordPress. Каждой публикуемой статье задаётся категория и тэги. Скрипт установлен на отдельном компе и запускается раз в сутки с помощью расписания скриптов, публикуя 2-3 статьи за раз.
Про все результаты этого эксперимента будем сообщать на нашем сайте.

Сам скрипт:

Скрипт написан 3.09.2012 в Human Emulator 4.4.19 Advanced.
На момент публикации статьи 6.09.2012 скрипт используется для эксперимента.

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

Скрипт Human Emulator для создания карты сайты

Предлагаем вашему вниманию скрипт, который создаёт карту сайта в xml формате и в виде страницы для сайта. Скрипт сам расставляет приоритет в зависимости от степени вложенности страницы. Главной странице назначается 1.0. Страницам следующего уровня 0.8, потом 0.6 всем остальным назначается значение по умолчанию 0.5. Скрипт имеет фильтра, что бы не добавлять не нужные ссылки или картинки или видео.

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

Пример XML файла с результатами:

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

Сам скрипт:

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

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

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

Скрипт Human Emulator проверки битых ссылок на сайте.

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

Если на сайте есть ссылки с авторизацией можно использовать функцию $browser->set_default_authorization($login,$password);

Используя функции: $browser->disable_download_file_dialog($enable); и $browser->set_default_download($folder); можно проверить скачиваются ли все файлы с сайта.

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

страница где находиться битая ссылка;href битой ссылки;текст битой ссылки

Пример файла с результатами:
http://humanemulator.net/interface/toolbar.php;http://humanemulator.net/171;Файл
http://humanemulator.net/interface/toolbar.php;http://humanemulator.net/185;Скрипты
http://humanemulator.net/interface/toolbar.php;http://humanemulator.net/205;Справка

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

Сам скрипт:

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

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

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

Наполнение живого журнала(livejournal.com) контентом под ключ

Наша линейка скриптов публикаторов контента в различные движки расширилась новым скриптом.
Это скрипт публикации статей в живой журнал (livejournal.com). Этот скрипт работает аналогично предыдущим скриптам Наполнение blogspot блога контентом под ключ и Наполнение WordPress контентом под ключ.

Cтатьи, для публикации в своём живом журнале мы помещаем в папку data/articles, а картинки для неё в папку data/images. Причём для каждой категории статей своя папка, например : data/articles/айкидо или data/articles/бокс и т.д. Название txt файла является заголовком статьи, а содержимое телом. Если в тексте статьи есть картинки, но их нет в папке data/images скрипт пытается скачать их по указанному в src адресу, если удалось скачать заливает на блог и подставляет новый src в статью, если не удалось скачать, то картинка удаляется из текста статьи.

После публикации статьи и картинки скрипт переносит в папки res/articles и res/images.

Скрипт можно поставить на расписание скриптов и запускать раз в какой-то период времени, например раз в 3 часа или раз в сутки. В указанное время скрипт будет ходить по папкам и проверять появились ли там статьи. Если статьи появились он их публикует на сайт.

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

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

Скрипт написан 27.03.2013 в Human Emulator 4.6.5 Advanced.

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

Наполнение blogspot блога контентом

После того как нами был написан скрипт автоматической публикации контента в WordPress
мы решили написать целую линейку подобных скриптов. И следующим в этой линейке стал скрипт автоматического наполнения блога в системе blogger.com.

Этот скрипт работает аналогично скрипту, который заполняет WordPress. Те статьи, которые мы хотим опубликовать на блоге мы помещаем в папку data/articles,
а картинки из этой статьи в папку data/images.
Причём для каждой категории создаётся своя папка, например : data/articles/айкидо или data/articles/бокс и т.д., и туда складываются статьи для этой категории.
Название txt файла является заголовком статьи, а содержимое телом. Если в тексте статьи есть картинки, но их нет в папке data/images скрипт пытается скачать
их по указанному в src адресу, если удалось скачать заливает на блог и подставляет новый src в статью, если не удалось скачать, то картинка удаляется из текста статьи.

Все опубликованные статьи и картинки скрипт переносит в папки res/articles и res/images.

Скрипт можно поставить на расписание скриптов и запускать раз в какой-то период времени, например раз в 3 часа или раз в сутки.
В указанное время скрипт будет ходить по папкам и проверять появились ли там статьи. Если статьи появились он их публикует на сайт.

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

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

Скрипт написан 10.02.2013 в Human Emulator 4.6.2 Advanced.

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

Наполнение сайта на WordPress контентом под ключ

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

Предлагаем вашему вниманию скрипт автоматического наполнения контентом сайта на WordPress. Он создан с учетом различных алгоритмов выполняемых действий. Скрипт забирает из заданных папок контент и картинки, после чего публикует в заданное вами время. Формат материалов может быть как в текстовом варианте, так и в html.

Как работает скрипт. В папке со скриптом есть папки data/articles и data/images. В первую папку мы добавляем статьи, которые скрипт должен будет опубликовать. Причём для каждой категории создаётся своя папка, например : data/articles/айкидо или data/articles/бокс и т.д., и туда складываются статьи для этой категории. Когда скрипт берёт статьи из этих папок, он проверяет, есть ли уже такие категории, если категории нет, то скрипт добавляет её. Название txt файла является заголовком статьи, а содержимое телом. Скрипт так же добавляет и тэги для статьи. Тэгами служат название категории, название статьи, а так же все слова из названия статьи. Если в статье вставлены картинки, например:

,
то скрипт проверяет если такие картинки в папке data/images, если нет, он проверяет указанный src в тексте, если src относительный (src=»/images/Foto/title/Ezzard_Charles_title.jpg») картинка удаляется, так как скачать её он не сможет,
если путь абсолютный (src=»http://justboxing.net/images/Foto/title/Ingemar_Johansson_title.jpg»), скрипт идёт по заданному адресу и качает оттуда картинку. Если картинка не закачалась, то скрипт удаляет картинку из текста. Таким образом, у вас получаются красивые живые статьи с картинками на вашем сайте.

Все опубликованные статьи и картинки скрипт переносит в папки res/articles и res/images.

Скрипт можно поставить на расписание скриптов и запускать раз в какой-то период времени, например раз в 6 часов или раз в сутки.
В указанное время скрипт будет ходить по папкам и проверять появились ли там статьи. Если статьи появились он их публикует на сайт.

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

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

Скрипт написан 01.02.2012 в Human Emulator 4.6.2 Advanced.

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