Скрипт сборщик данных 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»);.

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


$xhe_host ="127.0.0.1:7010";
// The following code is required to properly run XWeb Human Emulator
require("../../Templates/xweb_human_emulator.php");

// navigate to google
$browser->navigate("http://www.rts.ru/ru/spot/");
// wait on browser
$browser->wait_for();
//получить количество таблиц на странице
echo $cnt = $table->get_count();
// пройдёмся по всем таблицам
for($ii=0;$ii<$cnt;$ii++)
{ 
     // получим первый ряд $ii-той таблицы
     $str = $ii." таблица ряд 0\n\n\n";     
     $str = $str.$table->get_row_by_number($ii,0,true)."\n\n\n";
     // запишем результат в файл
     $textfile->add_string_to_file("tables.txt",$str,0) ;
}

// Quit
$app->quit();

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

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 таблицы и сохраним исходники в файл для дальнейшего изучения. Для этого добавим код:

// получить исходники таблицы
$tb1=$table->get_inner_html(24);

// запишем результат в файл
$textfile->write_file("table.txt",$tb1,0) ;

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

// перфикс для нахождения строки с названием идекса
$pref = "A class=Thurl href=\"";
// префикс перед названием индекса
$pref1 = "\">";
// префикс после названия индекса
$pref2 = "/A>";
// номер в строке первого префикса
$ind1= strpos($tb1,$pref);
// номер в строке второго префикса относительно первого
$ind2= strpos($tb1,$pref1,$ind1);
// номер в строке третьего префикса относительно второго
$ind3= strpos($tb1,$pref2,$ind2);

// название индекса заключено между номером второго префикса + длина самого префикса
//  и номером третьего префикса
echo $ind_name = substr($tb1,$ind2+strlen($pref1),$ind3-$ind2-strlen($pref1));

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

// получить название индекса
function get_index_name($tb1,&$ind_st) // &
{
  // перфикс для нахождения строки с названием идекса
  $pref = "A class=Thurl href=\"";
  // префикс перед названием индекса
  $pref1 = "\">";
  // префикс после названия индекса
  $pref2 = "/A>";
  // номер в строке первого префикса
  $ind1= strpos($tb1,$pref,$ind_st);
  // номер в строке второго префикса относительно первого
  $ind2= strpos($tb1,$pref1,$ind1);
  // номер в строке третьего префикса относительно второго
  $ind3= strpos($tb1,$pref2,$ind2);
   // изменим стартовый индекс
   $ind_st=$ind3;
  // название индекса заключено между номером второго префикса + длина самого префикса
  //  и номером третьего префикса
  return substr($tb1,$ind2+strlen($pref1),$ind3-$ind2-strlen($pref1));
}  

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

// стартовый номер символа для поиска префиксов
$ind_st=0;
// получить название индекса
echo $ind_name = get_index_name($tb1,$ind_st);
// покажем изменение индекса
echo $ind_st;

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


$xhe_host ="127.0.0.1:7010";

// The following code is required to properly run XWeb Human Emulator
require("../../Templates/xweb_human_emulator.php");

// navigate to google
$browser->navigate("http://www.rts.ru/ru/spot/");
// wait on browser
$browser->wait_for();

// получить исходники таблицы
$tb1=$table->get_inner_html(24);

// стартовый индекс для поиска префиксов
$ind_st=0;
// получить название индекса
echo $ind_name = get_index_name($tb1,$ind_st);
// покажем изменение индекса
echo $ind_st;

// получить название индекса
function get_index_name($tb1,&$ind_st)
{
  // перфикс для нахождения строки с названием идекса
  $pref = "A class=Thurl href=\"";
  // префикс перед названием индекса
  $pref1 = "\">";
  // префикс после названия индекса
  $pref2 = "/A>";
  // номер в строке первого префикса
  $ind1= strpos($tb1,$pref,$ind_st);
  // номер в строке второго префикса относительно первого
  $ind2= strpos($tb1,$pref1,$ind1);
  // номер в строке третьего префикса относительно второго
  $ind3= strpos($tb1,$pref2,$ind2);
   // изменим стартовый индекс
   $ind_st=$ind3;
  // название индекса заключено между номером второго префикса + длина самого префикса
  //  и номером третьего префикса
  return substr($tb1,$ind2+strlen($pref1),$ind3-$ind2-strlen($pref1));
}  

// Quit
$app->quit();

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

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


// получить название индекса
function get_index_name($tb1,&$ind_st)
{
  // перфикс для нахождения строки с названием идекса
  $pref = "A class=Thurl href=\"";
  // префикс перед названием индекса
  $pref1 = "\">";
  // префикс после названия индекса
  $pref2 = "/A>";
  // номер в строке первого префикса
  $ind1= strpos($tb1,$pref,$ind_st);
  // номер в строке второго префикса относительно первого
  $ind2= strpos($tb1,$pref1,$ind1);
  // номер в строке третьего префикса относительно второго
  $ind3= strpos($tb1,$pref2,$ind2);
   // изменим стартовый индекс
   $ind_st=$ind3;
  // название индекса заключено между номером второго префикса + длина самого префикса
  //  и номером третьего префикса
  return substr($tb1,$ind2+strlen($pref1),$ind3-$ind2-strlen($pref1));
}  

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


$xhe_host ="127.0.0.1:7010";

// The following code is required to properly run XWeb Human Emulator
require("../../Templates/xweb_human_emulator.php");

// подключить файл с функциями
include("functions.php");

// navigate to google
$browser->navigate("http://www.rts.ru/ru/spot/");
// wait on browser
$browser->wait_for();

// получить исходники таблицы
$tb1=$table->get_inner_html(24);

// стартовый индекс для поиска префиксов
$ind_st=0;
// получить название индекса
echo $ind_name = get_index_name($tb1,$ind_st);
// покажем изменение индекса
echo $ind_st;

// Quit
$app->quit();

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

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

1516.20;

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

// получить данные для индекса
function get_data($tb1,&$ind_st)
{
    // первый префикс
    $pref1 = "";
    // второй префикс
    $pref2 = "";

   // номер в строке первого префикса
   $ind1= strpos($tb1,$pref1,$ind_st);
   // номер в строке второго префикса
   $ind2= strpos($tb1,$pref2,$ind1);
   
   // нужные нам данные
   $data = substr($tb1,$ind1+strlen($pref1), $ind2- $ind1-strlen($pref1)); 

   // запомним последний найденый номер префикса 
   $ind_st = $ind2;
 
   // уберём лишнее из полученных данных 
   $data= str_replace("","",$data);
   $data= str_replace("","",$data);
   $data= str_replace("font color=red>","",$data);
   $data= str_replace("/font>","",$data);
   $data= str_replace("font color=green>","",$data);

   return $data;
}

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

// покажем полученные данные
echo get_data($tb1,$ind_st);

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

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

// результирующая строка
$str_res="";

// цикл для разбора всех данных таблицы
while($ind_st!==false)
{
   // укажем что используем глобальную переменную
   global $str_res;

   // получить название индекса
   $str_res = $str_res.get_index_name($tb1,$ind_st);

   // остановить как только не сможем найти нужный префикс
   if(!$ind_st)
      break;
  
   // цикл для разбора данных текущего индекса
   for ($ii=0;$ii<8;$ii++)
   {
      // покажем полученные данные
      $dts = get_data($tb1,$ind_st);
     
      // добавим все кроме первого значения с графиком
      if($ii!=0)
      {  
           // укажем что используем глобальную переменную
           global $str_res;
           // добавим данные в строку
          $str_res =$str_res.";".$dts;
      }
    }
        // прибавим перенос строки
        $str_res =$str_res."\n";
}

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

// получить название индекса
function get_index_name($tb1,&$ind_st)
{
  // перфикс для нахождения строки с названием идекса
  $pref = "A class=Thurl href=\"";
  // префикс перед названием индекса
  $pref1 = "\">";
  // префикс после названия индекса
  $pref2 = "/A>";
  // номер в строке первого префикса
  $ind1= strpos($tb1,$pref,$ind_st);

  // проверка если не нашли то выходим
  if($ind1===false)
  {
       $ind_st = false;
       return "";
  }

  // номер в строке второго префикса относительно первого
  $ind2= strpos($tb1,$pref1,$ind1);
  // номер в строке третьего префикса относительно второго
  $ind3= strpos($tb1,$pref2,$ind2);
   // изменим стартовый индекс
   $ind_st=$ind3;
  // название индекса заключено между номером второго префикса + длина самого префикса
  //  и номером третьего префикса
  return substr($tb1,$ind2+strlen($pref1),$ind3-$ind2-strlen($pref1));
}  

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


$xhe_host ="127.0.0.1:7010";

// The following code is required to properly run XWeb Human Emulator
require("../../Templates/xweb_human_emulator.php");

// подключить файл с функциями
include("functions.php");

// navigate to google
$browser->navigate("http://www.rts.ru/ru/spot/");
// wait on browser
$browser->wait_for();

// получить исходники таблицы
$tb1=$table->get_inner_html(24);

// стартовый индекс для поиска префиксов
$ind_st=0;

// результирующая строка
$str_res="";

// цикл для разбора всех данных таблицы
while($ind_st!==false)
{
   // укажем что используем глобальную переменную
   global $str_res;

   // получить название индекса
   $str_res = $str_res.get_index_name($tb1,$ind_st);

   // остановить как только не сможем найти нужный префикс
   if(!$ind_st)
      break;
  
   // цикл для разбора данных текущего индекса
   for ($ii=0;$ii<8;$ii++)
   {
      // покажем полученные данные
      $dts = get_data($tb1,$ind_st);
     
      // добавим все кроме первого значения с графиком
      if($ii!=0)
      {  
           // укажем что используем глобальную переменную
           global $str_res;
           // добавим данные в строку
          $str_res =$str_res.";".$dts;
      }
    }
        // прибавим перенос строки
        $str_res =$str_res."\n";
}

// запишем данные
$textfile->write_file("res.csv",$str_res,0) ;

// Quit
$app->quit();

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


$xhe_host ="127.0.0.1:7010";

// The following code is required to properly run XWeb Human Emulator
require("../../Templates/xweb_human_emulator.php");

// подключить файл с функциями
include("functions.php");

// navigate to google
$browser->navigate("http://www.rts.ru/ru/spot/");
// wait on browser
$browser->wait_for();

// получить исходники таблицы
$tb1=$table->get_inner_html(24);

// стартовый индекс для поиска префиксов
$ind_st=0;

// результирующая строка
$str_res="";

// время индекса 
$i_time = "";

// цикл для разбора всех данных таблицы
while($ind_st!==false)
{
   // укажем что используем глобальную переменную
   global $str_res;

   // получить название индекса
   $str_res = $str_res.get_index_name($tb1,$ind_st);

   // остановить как только не сможем найти нужный префикс
   if(!$ind_st)
      break;
  
   // цикл для разбора данных текущего индекса
   for ($ii=0;$ii<8;$ii++)
   {
      // покажем полученные данные
      $dts = get_data($tb1,$ind_st);
     
      // добавим все кроме первого значения с графиком
      if($ii!=0)
      {  
           // укажем что используем глобальную переменную
           global $str_res;
           // добавим данные в строку
          $str_res =$str_res.";".$dts;
      }
      // получение времени индекса
      if($ii==1) 
      { 
        global $i_time; 
        // заменим : на - чтобы можно было создавать файл 
        $i_time=str_replace(":","-",$dts);
      }
    }
        // прибавим перенос строки
        $str_res =$str_res."\n";
}

// запишем данные в файл с указанием времени
$textfile->write_file("/res/res".$i_time.".csv",$str_res,0) ;
// запишем данные в общий файл
$textfile->add_string_to_file("/res/res.csv",$str_res,0) ;

// Quit
$app->quit();

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

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

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

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

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

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

$browser->navigate('http://freeproxylists.com/elite.html');
$browser->wait_for(240,1);

На каждой такой странице висит около полутора десятка списков прокси, которые регулярно проверяются и пополняются. Наша задача – поочерёдно зайти в каждый список и собрать там необходимые данные. 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> , закрывающий искомые нами айпишники с портами. Таким образом, заполненная и готовая к использованию функция будет выглядеть так:

$webpage->get_body_inter_prefix_all('TD>','/TD>',true); 

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

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

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

//Открываем/создаём файл для готовых списков прокси
$txt = fopen("c:\\123.txt", "a+");

// Задаём стартовые значения рабочих переменных
$ind = 0;
$cod = 1;
$i=0;
// Цикл выкусывания прокси и портов
while ($cod!=false)
{
	$ind1 = strpos($s,'
',$ind); $cod = substr($s,$ind,$ind1-$ind); $ind = $ind1+4; $i++; // Проверка для сохранения прокси в нужном нам виде. If ($i % 2 != 0) fwrite($txt, $cod); else fwrite($txt, ":$cod\r\n"); } fclose($txt);

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

// The following code is required to properly run XWeb Human Emulator
require("../Templates/xweb_human_emulator.php");

$browser->navigate('http://freeproxylists.com/elite.html');
$browser->wait_for(240,1);

$anchor->click_by_inner_text('elite #9','true');
$browser->wait_for(240,1); 

$s = $webpage->get_body_inter_prefix_all('TD>','/TD>',true); 

//Открываем/создаём файл для готовых списков прокси
$txt = fopen("c:\\123.txt", "a+");

// Задаём стартовые значения рабочих переменных
$ind = 0;
$cod = 1;
$i=0;

// Запускаем цикл выкусывания прокси и портов
while ($cod!=false)
{
	$ind1 = strpos($s,'
',$ind); $cod = substr($s,$ind,$ind1-$ind); $ind = $ind1+4; $i++; // Проверка для сохранения прокси в нужном нам виде If ($i % 2 != 0) fwrite($txt, $cod); else fwrite($txt, ":$cod\r\n"); } fclose($txt); // Quit $app->quit();

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

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

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

for ($ii=1;$ii<20;$ii++)
{

	$browser->navigate('http://freeproxylists.com/elite.html');
	$browser->wait_for(240,1);
	
	$anchor->click_by_inner_text("elite #$ii",'true');
	$browser->wait_for(240,1);

// Остальной скрипт
}

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

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

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

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

// The following code is required to properly run XWeb Human Emulator
require("../Templates/xweb_human_emulator.php");

for ($ii=1;$ii<20;$ii++)
{
	echo "Парсим список №$ii
"; $browser->navigate('http://freeproxylists.com/elite.html'); $browser->wait_for(240,1); if ($anchor->click_by_inner_text("elite #$ii",'true')==true) { $browser->wait_for(240,1); sleep(2); $s = $webpage->get_body_inter_prefix_all('TD>','/TD>',true); //Открываем/создаём файл для готовых списков прокси $txt = fopen("c:\\123.txt", "a+"); // Задаём стартовые значения рабочих переменных $ind = 0; $cod = 1; $i=0; // Запускаем цикл выкусывания прокси и портов while ($cod!=false) { $ind1 = strpos($s,'
',$ind); $cod = substr($s,$ind,$ind1-$ind); $ind = $ind1+4; $i++; // Проверка для сохранения прокси в нужном виде If ($i % 2 != 0) { fwrite($txt, $cod); echo $cod; } else { fwrite($txt, ":$cod\r\n"); echo ":$cod
"; } } fclose($txt); } else { $ii=$ii+20; echo "Нет такого списка
"; } } echo "Закончили сбор"; // Quit $app->quit();

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

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

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

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

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

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

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



  
   Бесплатные скрипты для Human Emultor.
    http://x-scripts.com
    Много бесплатных скриптов на разные темы и различной сложности
    ru-ru
    x-scripts.com
    x-scripts.com
    
      http://x-scripts.com/images/favicon.gif
      Скрипты для Human Emulator.
      http://x-scripts.com
    

      Скрипт подтверждение регистрации.
      http://x-scripts.com/scripts/reg_confirm.php
      Скрипт подтверждение регистрации на примере сайта mamba.ru. Это скрипт, который демонстрирует как можно сделать 
подтверждение регистрации, которое приходит на мыло.
      
      Tue, 02 Oct 2012 13:49:30 +0200
      http://x-scripts.com/scripts/reg_confirm.php



      Скрипт парсер Google.
      http://x-scripts.com/scripts/parser_google.php
       Скрипт парсер Гугля. Это скрипт, который демонстрирует как можно разобрать поисковые результаты Google.
Скрипт работает следующим образом: берём ключи из файла с поисковыми фразами и вводим их в google. Затем разбираем поисковые результаты на ссылки.
Этот скрипт является скриптом-заготовкой, то есть вы легко можете дописать его для своих целей.
      
      Mon, 01 Oct 2012 12:54:49 +0200
      http://x-scripts.com/scripts/parser_google.php

  

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

// ////////// настройки скрипта///////////////////
// настройки ftp 
$ftp_server ="ftp домен без ftp://";
$ftp_user="";
$ftp_pass="";

// путь к странице которую нужно добавить в rss
$page_url="http://x-scripts.com/scripts/parser_rambler.php";
// пути к шаблонам
$tmp_rss="data/rss_tmpl.xml";
// папка с результатами
$res_folder="res/";
// полный путь к папке с результатами
$res_folder_full="C:\\XWeb\\Human Emulator\\My Scripts\\add_rss\\res\\" ;

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

read_file($tmp_rss,60) ;
// получим наш xml
$str_rss1=str_replace("{NEW_ITEM}",$str_item,$str_rss);
$str_rss2=str_replace("{NEW_ITEM}","{NEW_ITEM}\n\n".$str_item,$str_rss);
// запишем изменения в файл
$textfile->write_file($tmp_rss,$str_rss2,60);
$textfile->write_file($res_folder."rss.xml",$str_rss1,60);
// зальём на ftp
upload_to_site();

debug_mess(date("\[ d.m.y H:i:s\] ")." скрипт закончил работу
"); // Quit $app->quit(); ?>

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

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

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

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


	
	{TITLE}
	
	




             
{TITLE}

{IMG}{BODY}

По материалам: {SITE}


Все новости

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

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

// ////////// настройки скрипта///////////////////
// настройки ftp для вашего сайта
$ftp_server ="имя вашего сайта без ftp";
$ftp_user="ftp логин";
$ftp_pass="ftp пароль";

// пути к шаблонам
$tmp_index="data/tmp_1.php";
$tmp_news="data/tmp_2.php";
$tmp_ind_news="data/tmp_3.php";
// папка с результатами
$res_folder="res/";
// путь к папке с рисунками
$img_folder="C:\XWeb\Human Emulator\My Scripts\add_news\data\images\" ;
// полный путь к папке с результатами для загрузки по ftp 
$res_folder_full="C:\XWeb\Human Emulator\My Scripts\add_news\res\" ;
// количество добавляемых новостей за раз генерим случайным образом от 1 до 3
$cnt_news=rand(1,3);
// счётчик новостей для имён новостей
$founded_news=0;

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

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

navigate("сайт донор новостей");

$news=$webpage->get_body_inter_prefix_all("","
"); $a_news=explode("
",$news); for($i=0;$i"); // название новости $title_news=$anchor->get_inner_text_by_href($href_news,false); $anchor->click_by_href($href_news,false); // получим название файла $img_src=$image->get_attribute_by_src("/images/news/",false,"src"); $img_src=str_replace("/images/news/","",$img_src); // alt рисунка $img_alt=$image->get_attribute_by_src("/images/news/",false,"alt"); // сохраним картинку $image->screenshot_by_src($img_folder.$img_src,"/images/news/",false); // разбор новости $bd = $webpage->get_body(); $bd = get_string($bd,""); $bd_news = get_string($bd,"","=$cnt_news) break; } } debug_mess(date("[ d.m.y H:i:s] ")." скрипт закончил работу
"); // перезапустим для отчистки памяти //$app->restart(); // Quit $app->quit(); ?>

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

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

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

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

Сам скрипт:

navigate("адрес сайта источника");
// получаем все ссылки на статьи
$articles=$anchor->get_all_hrefs_by_inner_text("Статьи");
$a_articles=explode("
",$articles); for($i=1;$iclick_by_href($s_href, false); // показать все статьи $anchor->click_by_inner_text("Все",true); // ждём sleep(1); // получим категорию статей $category1=$webpage->get_body_inter_prefix("","-"); // получить все тексты ссылок по href $articles1=$anchor->get_all_inner_texts_by_href("article","
",false); // в массив $a_articles1=explode("
",$articles1); // идём с конца добавляя самые старые статьи for($j=count($a_articles1)-1;$j>1;$j--) { // получим заголовок статьи $s_text=trim($a_articles1[$j]); // проверим добавляли ли уже такую статью if(is_added($s_text)) continue; // перейдём в статью $anchor->click_by_inner_text($s_text); // ждём sleep(1); // получим текст статьи $s_body=$webpage->get_body_inter_prefix("

"); $s_body=translate($s_body); sleep(1); //$textfile->write_file("temp.txt",$s_text."

add_string_to_file($res_folder."added.txt",$s_text."\n",60) ; // добавили нужно количество статей if($founded_news>=$cnt_news) break 2; // вернёмся ко всем статьям $anchor->click_by_inner_text("Вернуться в раздел...."); } } debug_mess(date("\[ d.m.y H:i:s\] ")." скрипт закончил работу
"); // Quit $app->quit(); ?>

Скрипт написан 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 файла с результатами:


	
	
	http://humanemulator.net/index.php
	daily
	1.0
	

		http://humanemulator.net/interface.php
		weekly
		0.8
		

		http://humanemulator.net/interface/main-menu.php
		monthly
		0.6
		

		http://humanemulator.net/interface/main-menu/file.php
		

		http://humanemulator.net/interface/main-menu/edit.php
		

		http://humanemulator.net/interface/main-menu/type.php
		
и т.д.

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

// ////////// настройки скрипта///////////////////
// проверяемый сайт
$site="http://humanemulator.net/";
// главная страница сайта
$main_page=$site."index.php";
// путь к шаблону для создания карты сайта
$temp_path="/data/template.php";
// папка с результатами
$res_path="/res/";

// проверочная строка 
$error_404="Error 404: File Not Found";

// фильтр по словам в href
// задавать через , 
// какие ссылки не обрабатывать
$filter="/forum/,/images/,#,.jpg,.mp4";

Сам скрипт:

delete($res_path."sitemap.php");
$file_os->delete($res_path."sitemap.xml");
$file_os->delete($res_path."tmp.txt");

// создать sitemap.xml
create_xml($main_page);
// добавим главную страницу в массив
$pgl=new PageLinks();
$pgl->page=$main_page;
$pgl->link_info=$main_page;
$a_links=array($pgl);
// собираем и проверяем 
for($k=0;$kpage);
      // проверяем фильтры
    if(!check_filter($pg))
       continue;
  
    // переходим на сайт
    $browser->navigate($pg);

    // проверить на 404
    if(check_page_404($pg))
       continue;

    // добавим в sitemap.xml 
    if($k>0)
    {
       add_to_xml($pg);
       // запишем во временный файл
		$textfile->add_string_to_file($res_path."tmp.txt",$a_links[$k]->link_info."\n",60) ;
    }

	 // получим все href-ы на странице
	 $hrefs=$anchor->get_all_hrefs();
	 // преобразуем в массив
	 $hrefs=explode("
",$hrefs); // пройтись по всем hrefs и удалим лишнее for($ii=0; $iiget_inner_text_by_href($pg_href1,false); $str=""; // если нет текста вместо него href if($in_txt=="") $str="$pg_href
"; else $str="$in_txt
"; $pgl=new PageLinks(); $pgl->page=$pg_href; $pgl->link_info=$str; $a_links[]=$pgl; } } } // запишем в файл закрывающий тэг $textfile->add_string_to_file($res_path."sitemap.xml","\n\n",60); // создадим sitemap.php файл $links=$textfile->read_file($res_path."tmp.txt",60) ; $templ =$textfile->read_file($temp_path,60); $templ=str_replace("{SITE_MAP}",$links,$templ); // запишем файл $textfile->write_file($res_path."sitemap.php",$templ,60) ; debug_mess(date("\[ d.m.y H:i:s\] ")." скрипт закончил работу
"); // Quit $app->quit(); ?>

Скрипт написан 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;Справка

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

// ////////// настройки скрипта///////////////////
// проверяемый сайт
$site="http://humanemulator.net/";
// путь к файлу с плохими ссыками
$path_bad_links="./res/bad_links.txt";
// проверочная строка, по которой мы определяем страницу 404
$error_404="Error 404: File Not Found";
// фильтр по словам в href ссылок
// задавать то что не нужно собирать через ,
// например: /forum/,/objects/, и т.д.
$filter="/forum/";

// режим отладки - для вывода сообщений в панель отладки
$dbg=true;

Сам скрипт:

/* ** 
//  Наш сайт http://x-scripts.com
//  Скрипт проверки битых ссылок на сайте.
//  по любым вопросам касающимся скрипта 
//  можно написать нам на мыло order@x-scripts.com
** */
$xhe_host ="127.0.0.1:7010";

// The following code is required to properly run XWeb Human Emulator
require("../../Templates/xweb_human_emulator.php");

// ////////// настройки скрипта///////////////////
// проверяемый сайт
$site="http://humanemulator.net/";
// путь к файлу с плохими ссыками
$path_bad_links="./res/bad_links.txt";
// проверочная строка 
$error_404="Error 404: File Not Found";
// фильтр по словам в href
// задавать через ,
$filter="/forum/";

// режим отладки
$dbg=true;

// /////////////////// дополнительные модули /////////////////////
// функции 
require_once("functions.php");

// ///////////////////// script /////////////////////////////////////////////////////////
debug_mess(date("\[ m.d.y H:i:s\] ")." скрипт запустили");

// добавим главную страницу в массив
$pgl=new PageLinks();
$pgl->page=$site;
$pgl->link_info=$site;
$a_links=array($pgl);

// чистим данные
$file_os->delete($path_bad_links);

// собираем и проверяем 
for($k=0;$kpage;
      // проверяем фильтры
    if(!check_filter($pg))
       continue;
    
    // переходим на сайт
    $browser->navigate($pg);
    // проверить на 404
    if(check_page_404($a_links[$k]->link_info))
       continue;

	 // получим все href-ы на странице
	$hrefs=$anchor->get_all_hrefs();
	// преобразуем в массив
	$hrefs=explode("
",$hrefs); // пройтись по всем hrefs for($ii=0; $iiget_inner_text_by_href($pg_href1,false); // если ещё не проверяли проверим // добавим проверяемую страницу в массив if(!is_a_exists($pg_href)) { // создадим объект с данными по ссылке $pgl=new PageLinks(); $pgl->page=$pg_href; $pgl->link_info=$str; $a_links[]=$pgl; } } } debug_mess(date("\[ d.m.y H:i:s\] ")." скрипт закончил работу
"); // Quit $app->quit();

Скрипт написан 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 часа или раз в сутки. В указанное время скрипт будет ходить по папкам и проверять появились ли там статьи. Если статьи появились он их публикует на сайт.

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

// настройки админки 
$blog = "http://dumanovskij.livejournal.com";
$blog_login = "dumanovskij";
$blog_pwd = "kuvxplscgQQ4110";

// заголовок блога
$caption = "Test Script";
// путь к папке со статьями
$path_to_artcls = "data\\articles\\";
// путь к папке с рисунками
$path_to_imgs = "data\\images\\";
// путь к папке с добавленными статьями
$path_to_res_artcls = "res\\articles\\";
// путь к папке с добавленными рисунками
$path_to_res_imgs = "res\\images\\";

// режим отладки
$dbg = true;

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

is_exist($path_to_res_artcls))
   $folder->create($path_to_res_artcls);

// если нет папки res\images - создадим ее
if (!$folder->is_exist($path_to_res_imgs))
   $folder->create($path_to_res_imgs);

// получаем массив каталогов статей
$arr_of_cats = scandir($path_to_artcls);

// пробежимся по всем каталогам
foreach ($arr_of_cats as $category)
{
	// пропустим пустые
	if ($category == "." or $category == ".." or $category == "")
		continue;
		
	// получаем массив статей в конкретном каталоге
	$arr_of_arts = scandir($path_to_artcls . $category . "/");
	
	// работаем с конкретной статьей
	foreach ($arr_of_arts as $article)
	{
		//пропустим пустые статьи
		if ($article == "." or $article == ".." or $category == "")
			continue;
		sleep(2);
			
		// добавляем статью на сайт
		add_new_article($article, $caption);
		
		// выбираем абсолютный путь
		$path_to_script_folder = $debug->get_cur_script_folder(); 
		
		
		// переносим статью из папки data в папку res
		// проверяем существование категории статьи
		if (!$folder->is_exist($path_to_script_folder.$path_to_res_artcls.$category))
		{
			// создаем папку с категорией
			if ($folder->create($path_to_script_folder.$path_to_res_artcls.$category))
			{
				debug_mess("
Папка $category создана"); } else { debug_mess("
Папка $category НЕ создана!!!"); } } // перемещаем статью if ($file_os->move($path_to_script_folder.$path_to_artcls.$category."/".$article, $path_to_res_artcls.$category."/".$article)) { debug_mess("
Статья $article успешно перемещена."); } else { debug_mess("
Статья $article НЕ перемещена!!!"); } } } debug_mess("скрипт закончил работу"); // Quit $app->quit(); ?>

Скрипт написан 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 часа или раз в сутки.
В указанное время скрипт будет ходить по папкам и проверять появились ли там статьи. Если статьи появились он их публикует на сайт.

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

// настройки админки 
$blog = "http://wqwqwqwqwqwqw.blogspot.com/";
$blog_login = "ii445571";
$blog_pwd = "qwerty2013";

// заголовок блога
$caption = "Test Script";
// путь к папке со статьями
$path_to_artcls = "data/articles/";
// путь к папке с рисунками
$path_to_imgs = "data/images/";
// путь к папке с добавленными статьями
$path_to_res_artcls = "res/articles/";
// путь к папке с добавленными рисунками
$path_to_res_imgs = "res/images/";
// режим отладки
$dbg = true;

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

is_exist($path_to_res_artcls . $category . "/"))
		{
			// создаем папку с категорией
			if ($folder->create($path_to_res_artcls . $category . "/"))
			{
				debug_mess("Папка $category создана");
			}
			else
			{
				debug_mess("Папка $category НЕ создана!!!");
			}
		}
		
		// перемещаем статью
		if ($file_os->move($path_to_artcls.$category."/".$article, $path_to_res_artcls.$category."/".$article))
		{
			debug_mess("Статья $article успешно перемещена.");
		}
		else
		{
			debug_mess("Статья $article НЕ перемещена!!!");
		}
	}
}
  debug_mess("скрипт закончил работу");
// Quit
$app->quit();

?>

Скрипт написан 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 часов или раз в сутки.
В указанное время скрипт будет ходить по папкам и проверять появились ли там статьи. Если статьи появились он их публикует на сайт.

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

// настройки админки wordpress
$blog = "адрес админки wordpress";
$blog_login = "логин админки";
$blog_pwd = "пароль админки";

// настройки ftp
$ftp_server = "ftp сервер";
$ftp_user = "ftp пользователь";
$ftp_pass = "ftp пароль";

// путь к папке со статьями
$path_to_artcls = "data/articles/";
// путь к папке с рисунками
$path_to_imgs = "data/images/";
// путь к папке с добавленными статьями
$path_to_res_artcls = "res/articles/";
// путь к папке с добавленными рисунками
$path_to_res_imgs = "res/images/";
// папка для хранения рисунков на сайте  - в эту папку мы быдем заливать картинки по ftp
$img_folder = "img/";	
// ftp папка сайта с wordpress
$ftp_folder = "/public_html/WordPress/";

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

is_exist($path_to_res_artcls . $category . "/"))
		{
			// создаем папку с категорией
			if ($folder->create($path_to_res_artcls . $category . "/"))
			{
				debug_mess("Папка $category создана");
			}
			else
			{
				debug_mess ("Папка $category НЕ создана!!!");
			}
		}
		// перемещаем статью
		if ($file_os->move($path_to_artcls.$category."/".$article, $path_to_res_artcls.$category."/".$article))
		{
			debug_mess("Статья $article успешно перемещена.");
		}
		else
		{
			debug_mess("Статья $article НЕ перемещена!!!");
		}
	}
}
debug_mess(date("\[ d.m.y H:i:s\] ")." скрипт закончил работу
"); // Quit $app->quit(); ?>

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

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