skilk Опубликовано 30 апреля, 2006 Жалоба Поделиться Опубликовано 30 апреля, 2006 Мне надо взять с другого сайта разную информацию(погода, курсы валют и т.д.). Как это сделать, подскажите пожалуйста. Ссылка на комментарий Поделиться на другие сайты Поделиться
krollik Опубликовано 30 апреля, 2006 Жалоба Поделиться Опубликовано 30 апреля, 2006 загружаеш код страници и по регулярному выражению ищещ параметры.. Ссылка на комментарий Поделиться на другие сайты Поделиться
skilk Опубликовано 30 апреля, 2006 Автор Жалоба Поделиться Опубликовано 30 апреля, 2006 А на каком нибудь примере можно? Ссылка на комментарий Поделиться на другие сайты Поделиться
krollik Опубликовано 30 апреля, 2006 Жалоба Поделиться Опубликовано 30 апреля, 2006 Ну пример я счас пистаь не буду, но тут всё просто.. Сначало берёте код всей старници функцией $text = file_get_contents("softodrom.ru/index.php"); А потом производиш обычный поиск по тексту находящимуся в $text. (тут лучше использовать регулярные выражения и отталкиваться от тегов таблиц в которых находиться нужная инфорамция) Ссылка на комментарий Поделиться на другие сайты Поделиться
Ф@РТОВЫЙ Опубликовано 1 мая, 2006 Жалоба Поделиться Опубликовано 1 мая, 2006 skilk: С какого сайта берём инфу и какую инфу? Может помогу кодом. krollik: Если хостер беспокоится о безопасности, то он уберёт возможность читать данные с других сайтов как файлы, в любом случае, так как написал ты, информация будет искаться в папке softodrom.ru в файле index.php правильнее будет так: $text = file_get_contents("http://www.softodrom.ru/index.php"); Но лучше всего пользоваться сокетами или, если есть библиотекой CURL Ссылка на комментарий Поделиться на другие сайты Поделиться
skilk Опубликовано 1 мая, 2006 Автор Жалоба Поделиться Опубликовано 1 мая, 2006 skilk: С какого сайта берём инфу и какую инфу? Может помогу кодом. Мне нужно взять курсы доллара и евро, с любого сайта. Ссылка на комментарий Поделиться на другие сайты Поделиться
Ф@РТОВЫЙ Опубликовано 2 мая, 2006 Жалоба Поделиться Опубликовано 2 мая, 2006 Чтож, попробуем взять курсы валют с сайта http://www.cashservice.ru/ Потребуются сокеты, они есть почти везде, где есть пхп Вставь это где-нибудь вначале: <?set_time_limit(0);$USD = "Не определено"; $EUR = "Не определено"; //Переменные под результат$cash_file = "./cash.dat"; // Фаил кэша, чтоб не грузить каждый раз.$address = gethostbyname("www.cashservice.ru"); // Имя сервера без http://$port = getservbyname('www', 'tcp'); //Берём порт соединения (80)//Создаём сокет соединение$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);if($socket >= 0) {if(socket_connect($socket, $address, $port) >= 0) { //Отправляем запрос $query = "GET / HTTP/1.0\r\n"; $query .= "Host: www.cashservice.ru\r\n"; $query .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\r\n"; $query .= "\r\n"; socket_write($socket, $query, strlen($query)); //Получаем страницу $page = ""; $page_get = false; while ($out = socket_read($socket, 1024)) { $page .= $out; $page_get = true; } //Закрываем соединение socket_close($socket);}}?> Продолжение в следующем посту Ссылка на комментарий Поделиться на другие сайты Поделиться
Ф@РТОВЫЙ Опубликовано 2 мая, 2006 Жалоба Поделиться Опубликовано 2 мая, 2006 Выше я получил пагу себе в переменную, теперь надо отсеять лишнее Пиши это сразу после того что я написал выше <?if($page_get) {$find_str = eregi_replace('(.*)<td.*class="td_statistika" width><strong>USD</strong>.*<td.*class="td_statistika" width><strong>EUR</strong>.*<td.*class="td_statistika" width=15%>([0-9]{2}\\.[0-9]{4}).*<td.*class="td_statistika" width=15%>([0-9]{2}\\.[0-9]{4})(.*)', "\\2\\|\\3", $page);$find_str = explode("|", $find_str);$USD = $find_str[0];$EUR = $find_str[1];}?> После выполнения данного скрипта у тебя должны появится переменные $USD и $EUR которые содержат строки с рублёвой стоемостью валют. Удачи! ЗЫ: Всё писал прямо здесь (привычка у меня такая), ничего не тестил, если чего намудрил - больно не бейте! Ссылка на комментарий Поделиться на другие сайты Поделиться
skilk Опубликовано 3 мая, 2006 Автор Жалоба Поделиться Опубликовано 3 мая, 2006 Спасибо за помощь, потренеруюсь. :( Ссылка на комментарий Поделиться на другие сайты Поделиться
Shurr Опубликовано 3 мая, 2006 Жалоба Поделиться Опубликовано 3 мая, 2006 Если тебе нужны курсы валют - их гораздо проще будет взять по общедоступному каналу через RSS. Новости на сайте http://www.google.com/search?client=opera&...=utf-8&oe=utf-8 P.S. К тому же будет меньше проблем с законами - как юридическими, так и моральными. Потому что "резать" на ходу чужую страницу, чтобы вытащить из нее инфу и отобразить ее на своем сайте - не по людски как-то. Ссылка на комментарий Поделиться на другие сайты Поделиться
skilk Опубликовано 7 мая, 2006 Автор Жалоба Поделиться Опубликовано 7 мая, 2006 Если тебе нужны курсы валют - их гораздо проще будет взять по общедоступному каналу через RSS. Мне нужно чтоб курсы usd и euro в текстовой файл записывались, и желательно не каждый раз при открытии страницы, а один раз в день. Как это с помощью RSS сделать??? Ссылка на комментарий Поделиться на другие сайты Поделиться
Ф@РТОВЫЙ Опубликовано 7 мая, 2006 Жалоба Поделиться Опубликовано 7 мая, 2006 skilk: хотел сделать, да забыл, сейчас подредактируем мой код (с rss не юзал) <?set_time_limit(0);$USD = "Не определено"; $EUR = "Не определено"; //Переменные под результат$cash_file = "./cash.dat"; // Фаил кэша, чтоб не грузить каждый раз.$date = date("d:m:Y");$cash = file($cash_file);if($cash[0] == $date) {$USD = $cash[1];$EUR = $cash[2];} else {$address = gethostbyname("www.cashservice.ru"); // Имя сервера без http://$port = getservbyname('www', 'tcp'); //Берём порт соединения (80)//Создаём сокет соединение$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);if($socket >= 0) {if(socket_connect($socket, $address, $port) >= 0) { //Отправляем запрос $query = "GET / HTTP/1.0\r\n"; $query .= "Host: www.cashservice.ru\r\n"; $query .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\r\n"; $query .= "\r\n"; socket_write($socket, $query, strlen($query)); //Получаем страницу $page = ""; $page_get = false; while ($out = socket_read($socket, 1024)) {$page .= $out;$page_get = true; } //Закрываем соединение socket_close($socket);}}if($page_get) { $find_str = eregi_replace('(.*)<td.*class="td_statistika" width><strong>USD</strong>.*<td.*class="td_statistika" width><strong>EUR</strong>.*<td.*class="td_statistika" width=15%>([0-9]{2}\\.[0-9]{4}).*<td.*class="td_statistika" width=15%>([0-9]{2}\\.[0-9]{4})(.*)', "\\2\\|\\3", $page); $find_str = explode("|", $find_str); $USD = $find_str[0]; $EUR = $find_str[1]; $fn = fopen($cash_file, "w"); fwrite($fn, "$date\r\n$USD\r\n$EUR"); fclose($fn);}}?> Ссылка на комментарий Поделиться на другие сайты Поделиться
Shurr Опубликовано 7 мая, 2006 Жалоба Поделиться Опубликовано 7 мая, 2006 Мне нужно чтоб курсы usd и euro в текстовой файл записывались, и желательно не каждый раз при открытии страницы, а один раз в день.Как это с помощью RSS сделать??? Тут сразу две задачи, которые надо решать по отдельности. Первая - как запустить задание, чтобы оно выполнялось по расписанию, например раз в сутки. Это может быть cron или планировщик задач Windows, в зависимости от используемой OC. Может быть также самописный поток-планировщик, просыпающийся раз в сутки (вот только я не уверен, что php поддерживает работу с потоками). Вторая задача - как считать нужные тебе данные и записать их в файл. Это ты можешь сделать либо препарирую страницу сайта при помощи regexp'ов, либо по rss. Как забрать данные по RSS ты можешь прочитать по первой данной мною ссылке (в том топике есть ссылка на скрипт, читающий rss), найти подходящий тебе rss канал с курсами валют - по второй. Ну а про то, как записать данные в файл ты можешь прочитать в любом справочнике. Ссылка на комментарий Поделиться на другие сайты Поделиться
skilk Опубликовано 8 мая, 2006 Автор Жалоба Поделиться Опубликовано 8 мая, 2006 А можно понятный, реально работающий пример с использованием RSS??? Ссылка на комментарий Поделиться на другие сайты Поделиться
mmap Опубликовано 9 мая, 2006 Жалоба Поделиться Опубликовано 9 мая, 2006 Лорд Дмитрий: Сразу понятно что PHP вы начали изучать совсем недавно. Использование функции file_get_contents ПРЕДПОЧТИТЕЛЬНЕЕ операциям с сокетами. eregi_replace - По возможноти НИКОГДА не пользуйтесь этой функцией. Ссылка на комментарий Поделиться на другие сайты Поделиться
Ф@РТОВЫЙ Опубликовано 10 мая, 2006 Жалоба Поделиться Опубликовано 10 мая, 2006 kolya7k: почему не стоит пользоваться функцией eregi_replace ? Ссылка на комментарий Поделиться на другие сайты Поделиться
Siberex Опубликовано 10 мая, 2006 Жалоба Поделиться Опубликовано 10 мая, 2006 Лорд Дмитрий: Пользоваться ей не стоит потому, что она гораздо медленнее, чем preg_replace, что было неоднократно доказано. Хотя на практике, как правило, программист использует то, что привычнее и это - дело вкуса. Но если регулярная замена используется много раз в скрипте или используется объемный шаблон/текст, то использование eregi_replace ударит по скорости выполнения. Ссылка на комментарий Поделиться на другие сайты Поделиться
mmap Опубликовано 10 мая, 2006 Жалоба Поделиться Опубликовано 10 мая, 2006 P.S.: А точнее - в примерно в 8 раз медленнее. Так-же preg_split примерно в 20 раз быстрее preg_match. Так что для разбития строки на составляющие лучше пользоваться ей. Ссылка на комментарий Поделиться на другие сайты Поделиться
skilk Опубликовано 12 мая, 2006 Автор Жалоба Поделиться Опубликовано 12 мая, 2006 Я конечно всё понимаю, но я вообще в рнр ноль, ПОМОГИТЕ ПОЖАЛУЙСТА С КОДОМ!!! Ссылка на комментарий Поделиться на другие сайты Поделиться
Ф@РТОВЫЙ Опубликовано 14 мая, 2006 Жалоба Поделиться Опубликовано 14 мая, 2006 skilk: Я ж тебе дал код, который раз в сутки берёт инфу с другого сайта Ссылка на комментарий Поделиться на другие сайты Поделиться
stivin Опубликовано 1 ноября, 2008 Жалоба Поделиться Опубликовано 1 ноября, 2008 skilk: Я ж тебе дал код, который раз в сутки берёт инфу с другого сайта подскажите пожалуйста как взять инфую например не с http://www.cashservice.ru/ ,а с http://www.cashservice.ru/about/news/ Ссылка на комментарий Поделиться на другие сайты Поделиться
Ф@РТОВЫЙ Опубликовано 9 ноября, 2008 Жалоба Поделиться Опубликовано 9 ноября, 2008 stivin: подняли такую древнюю тему... я и не думал что два года назад я был такой нуб в php :) отвечу просто - по аналогии. код регулярок зависит от того что хотите выдрать из чужой странички. так же хочу осведомить, что выдирание основоного контента чужого сайта, это плагиат и не законно! хотя, мы живем в России и при наличии денег здесь можно нарушать любые законы. опишите подробнее что нужно выдрать, может помогу :) Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения