Предлагаем вашему вниманию скрипт, который собирает финансовые данные по котировкам из таблиц на 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%)
и т.д.
Настройки скрипта:
// файл с символами компаний
$quotes=file("data/quotes.txt");
// путь к файлу с результатами создаётся по дате и времени запуска
$res_file_name = "res/".date("mdy_His").".csv";
Для этого скрипта, как впрочем и для любого другого, можно использовать Расписание скриптов для запуска в нужное время или нужное количество раз.
В расписании скриптов есть возможность запускать скрипт заданное количество раз, один раз, раз в минуту, раз в 5 минут, раз в 10 минут, по выбору, раз в полчаса, раз в час, раз в день, раз в неделю, раз в месяц, раз в год, бесконечно.

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

Расписание скриптов.
Можно легко переделать скрипт, для получение любых необходимых данных с finance.yahoo.com.
Поменять формат вывода данных.
Дописать скрипт, что бы он выполнял необходимый анализ данных и при нахождении нужных параметров отправлял сообщение на email.
Для более быстрой работы скрипта рекомендуется отключить картинки, java script, java, active x, звуки и видео в настройках браузера.
Сам скрипт:
navigate("http://finance.yahoo.com/q?s=".trim($quotes[$i])."&ql=1");
// получить данные в формате
//symbol;Prev Close;Open;High;Low;Close;Volume;CHANGE
$str=trim($quotes[$i]).";";
// закрытие
$str_close=$element->get_inner_text_by_attribute("class","time_rtq_ticker",false);
// изменение
$str_change=$element->get_inner_text_by_attribute("class","time_rtq_content",false);
// prev close
$str_prev=$table->get_cell_by_number($table->get_number_by_id("table1"),0,1,false);
// открытие
$str_open=$table->get_cell_by_number($table->get_number_by_id("table1"),1,1,false);
// получаем дневной низ и верх
$str_day_range=$table->get_cell_by_number($table->get_number_by_id("table2"),0,1,false);
$str_day_range=explode("-", $str_day_range);
$str_low=trim($str_day_range[0]);
$str_high=trim($str_day_range[1]);
// volume
$str_volume=$table->get_cell_by_number($table->get_number_by_id("table2"),2,1,false);
// результирующая строка
$str.=$str_prev.";". $str_open.";".$str_high.";".$str_low.";".$str_close.";".$str_volume.";".$str_change."\n";
// записываем в файл
$textfile->add_string_to_file($res_file_name,$str,60) ;
}
debug_mess(date("\[ d.m.y H:i:s\] ")." скрипт закончил работу
");
// Quit
$app->quit();
?>
Скрипт написан 19.09.2012 в Human Emulator 4.4.19 Advanced.
На момент публикации статьи 20.09.2012 скрипт был рабочий.
скачать скрипт
Этот скрипт работает в Demo версии программы Human Emulator. Посмотреть все скрипты для Demo и Скачать Demo