Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Как взять инфу с другого сайта


Рекомендуемые сообщения

Мне надо взять с другого сайта разную информацию(погода, курсы валют и т.д.).

Как это сделать, подскажите пожалуйста.

Ссылка на комментарий
Поделиться на другие сайты

Ну пример я счас пистаь не буду, но тут всё просто..

Сначало берёте код всей старници функцией

$text = file_get_contents("softodrom.ru/index.php");

А потом производиш обычный поиск по тексту находящимуся в $text. (тут лучше использовать регулярные выражения и отталкиваться от тегов таблиц в которых находиться нужная инфорамция)

Ссылка на комментарий
Поделиться на другие сайты

skilk: С какого сайта берём инфу и какую инфу? Может помогу кодом.

krollik: Если хостер беспокоится о безопасности, то он уберёт возможность читать данные с других сайтов как файлы, в любом случае, так как написал ты, информация будет искаться в папке softodrom.ru в файле index.php правильнее будет так: $text = file_get_contents("http://www.softodrom.ru/index.php");

Но лучше всего пользоваться сокетами или, если есть библиотекой CURL

Ссылка на комментарий
Поделиться на другие сайты

skilk: С какого сайта берём инфу и какую инфу? Может помогу кодом.

Мне нужно взять курсы доллара и евро, с любого сайта.

Ссылка на комментарий
Поделиться на другие сайты

Чтож, попробуем взять курсы валют с сайта 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);}}?>

Продолжение в следующем посту

Ссылка на комментарий
Поделиться на другие сайты

Выше я получил пагу себе в переменную, теперь надо отсеять лишнее

Пиши это сразу после того что я написал выше

<?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 которые содержат строки с рублёвой стоемостью валют. Удачи!

ЗЫ: Всё писал прямо здесь (привычка у меня такая), ничего не тестил, если чего намудрил - больно не бейте!

Ссылка на комментарий
Поделиться на другие сайты

Если тебе нужны курсы валют - их гораздо проще будет взять по общедоступному каналу через RSS.

Новости на сайте

http://www.google.com/search?client=opera&...=utf-8&oe=utf-8

P.S. К тому же будет меньше проблем с законами - как юридическими, так и моральными. Потому что "резать" на ходу чужую страницу, чтобы вытащить из нее инфу и отобразить ее на своем сайте - не по людски как-то.

Ссылка на комментарий
Поделиться на другие сайты

Если тебе нужны курсы валют - их гораздо проще будет взять по общедоступному каналу через RSS.

Мне нужно чтоб курсы usd и euro в текстовой файл записывались, и желательно не каждый раз при открытии страницы, а один раз в день.

Как это с помощью RSS сделать???

Ссылка на комментарий
Поделиться на другие сайты

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);}}?>
Ссылка на комментарий
Поделиться на другие сайты

Мне нужно чтоб курсы usd и euro в текстовой файл записывались, и желательно не каждый раз при открытии страницы, а один раз в день.

Как это с помощью RSS сделать???

Тут сразу две задачи, которые надо решать по отдельности.

Первая - как запустить задание, чтобы оно выполнялось по расписанию, например раз в сутки. Это может быть cron или планировщик задач Windows, в зависимости от используемой OC. Может быть также самописный поток-планировщик, просыпающийся раз в сутки (вот только я не уверен, что php поддерживает работу с потоками).

Вторая задача - как считать нужные тебе данные и записать их в файл. Это ты можешь сделать либо препарирую страницу сайта при помощи regexp'ов, либо по rss. Как забрать данные по RSS ты можешь прочитать по первой данной мною ссылке (в том топике есть ссылка на скрипт, читающий rss), найти подходящий тебе rss канал с курсами валют - по второй. Ну а про то, как записать данные в файл ты можешь прочитать в любом справочнике.

Ссылка на комментарий
Поделиться на другие сайты

Лорд Дмитрий: Сразу понятно что PHP вы начали изучать совсем недавно.

Использование функции file_get_contents ПРЕДПОЧТИТЕЛЬНЕЕ операциям с сокетами.

eregi_replace - По возможноти НИКОГДА не пользуйтесь этой функцией.

Ссылка на комментарий
Поделиться на другие сайты

Лорд Дмитрий: Пользоваться ей не стоит потому, что она гораздо медленнее, чем preg_replace, что было неоднократно доказано. Хотя на практике, как правило, программист использует то, что привычнее и это - дело вкуса. Но если регулярная замена используется много раз в скрипте или используется объемный шаблон/текст, то использование eregi_replace ударит по скорости выполнения.

Ссылка на комментарий
Поделиться на другие сайты

P.S.: А точнее - в примерно в 8 раз медленнее.

Так-же preg_split примерно в 20 раз быстрее preg_match. Так что для разбития строки на составляющие лучше пользоваться ей.

Ссылка на комментарий
Поделиться на другие сайты

  • 2 года спустя...

skilk: Я ж тебе дал код, который раз в сутки берёт инфу с другого сайта

подскажите пожалуйста как взять инфую например не с http://www.cashservice.ru/ ,а с http://www.cashservice.ru/about/news/

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

stivin: подняли такую древнюю тему... я и не думал что два года назад я был такой нуб в php :)

отвечу просто - по аналогии.

код регулярок зависит от того что хотите выдрать из чужой странички.

так же хочу осведомить, что выдирание основоного контента чужого сайта, это плагиат и не законно!

хотя, мы живем в России и при наличии денег здесь можно нарушать любые законы.

опишите подробнее что нужно выдрать, может помогу :)

Ссылка на комментарий
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...