Импортирования информации с чужого сайта на свой

www.karman.com.ua
портал о хостинге в Украине
Хостинг + Украина = Karman.com.ua

Сайт от А до Б

/

Основы сайта

/

Интересные скрипты

/

Изучаем PHP

/

Как заработать на сайте

/

Раскрутка сайта

/

CMS


Импортирования информации с чужого сайта на свой 

Еще по теме:
  Невозможно Импортировать дампы, созданные с помощью mysqldump, входящего в состав дистрибутива MySQL-сервера.

Импортирование информации с чужого сайта на свой сайт в свой дизайн

Салют :)

Пример предназначен для тех, кто начинает работать с php, и не только для них.

Результатом работы программы(скрипта) является прогноз погоды на 5 дней для любого, интересующего Вас города, выводимый в виде, который нравится именно Вам, а не дизайнерам сайта-донора.

Информация в таких случаях берется с известных серверов прогноза погоды (где не пишут фразу "запрещено использование информации" и т.п.). В данном случае используется сервер http://weather.yahoo.com/ , на котором есть страницы с погодой для довольно большого количества городов, и практически всегда можно найти если не интересующий Вас город, то ближайший ему и идентичный по погодным условиям.

Это законченный проект, работающий на сайте http://sim-sim.ru в разделе туризма "погода в мире".

Единственным недостатком является лишь то, что админу приходится вводить в текстовый файл (возможен вариант с mysql, но в том случае мне было проще сделать в файле) название населенного пункта на родном языке и ссылку на страницу с прогнозом погоды на него на сервере Яхо. Но никто за Вас этого делать не будет.

Посему, скрипт состоит из 2-х частей:

  • 1. Файл с администрированием (вводится в первую строку название города, на следующей строке - ссылка). Разбирать работу данной части, думаю, не стоит, комментариев более чем достаточно.
  • 2. Файл с самой программой. Работа программы будет подробно описана ниже.

1. Администрирование.

Выводим на экран форму с паролем pass.

В окне вводятся:

  • номера
  • названия
  • ссылки

Затем, после нажатия на кнопку и проверки пароля, записываем новый список в файл.



admin weather




file($adr); // читаем то, что сейчас есть в файле

if ($submit) { // проверяем на нажатость кнопки
if ($pass==$password) {
$fp=fopen($adr,"w");
fwrite ($fp, $ini); // записываем в файл измененные данные
fclose($fp);
$old=file($adr);
}
else {
echo $eror;
}
}
?>


// информация, введенная в форму, обрабатывается этим же файлом password:
inicialisation:

После ввода информации в файл в виде, получаем:

50
Ларнака
http://weather.yahoo.com/forecast/Larnaca_CY_f.html
51
Пафос
http://weather.yahoo.com/forecast/Paphos_CY_f.html
  • "44" - номер города.
  • "Ларнака" - название города.
  • "http://weather.yahoo.com/forecast/Larnaca_CY_f.html" - ссылка на погоду в городе Ларнака на Яхе.

Ссылки на города организовываются по принципу:

Ларнака

А можно так:

Ларнака

Но если город из друх слов, то в пробелах пишем "%20"

В таком случае, номера городов в списке не нужны:

Если у нас не текстовый файл, а mysql, то все проще.

Если кому понадобится вариант с mysql, пишите мне totoeval@mtu-net.ru

2. Программа (собственно, адаптер чужого кода к Вашему сайту).

echo $brdcolor; ?>>

file($ini); // читаем файл со списком городов-ссылок а массив $region // определение координат искомого города for ($i=0; $i<sizeof($region); $i++) { if (trim($region[$i])==$weather) { // ищем номер города в списке $city=trim($region[$i+1]); // название города $adr=trim($region[$i+2]); // адрес страницы } else { } } // если у нас передается информация не номером города, а названием, то: for ($i=0; $i<sizeof($region); $i++) { $city=str_replace($city,"%20"," "); // заменяем "%20" на " " if (trim($region[$i])==$city) { // ищем название города в списке $adr=trim($region[$i+1]); // адрес страницы } else { } } // Входная информация для дальнейшего кода - $adr (адрес страницы // прогноза погоды для города на сайте http://weather.yahoo.com) // и $city - название города на родном языке. // фразы для поиска полезной информации. Оригинал фраз можно обнаружить // на странице, например, этой, // проанализировав код. здесь заводим в переменные фразы, по которым будем // искать нужную информацию (градусы, описания погоды, картинки). Используем // фразы до и после необходимой информации. Этот блок в будущем придется // изменять, когда на оригинале (weather.yahoo.com) изменится код страниц. // На 14 авг. 2001 он работает. $begin_screen='FORECAST ----'; // начальная фраза таблицы с прогнозом погоды $end_screen='
'; // последняя фраза таблицы $post_gradus='<'; // после градусов $before_gradus=''; // перед градусами $before_image='http://us.i1.yimg.com/us.yimg.com/i/we/fc/'; // перед картинкой $post_image='.gif'; // после картинки $before_forecast='top>'; // перед фразой погоды $post_forecast='
'; // после фразы погоды // массивы для переводов даты и описаний погоды с английского языка // на родной (в данном случае использован вариант перевода с // буржуйского на язык, которым разговаривал Ленин. $endat=array(" ","Mon","Tue","Wed","Thu","Fri","Sat","Sun", "May","Jul","Jun","Aug","Sep","Oct", "Nov","Dec","Jan","Feb","Mar","Apr"); // английские даты $rudat=array(" ","понедельник","вторник","среда","четверг", "пятница","суббота","воскресенье", "мая","июля","июня","августа","сентября","октября","ноября", "декабря","января","февраля","марта","апреля"); // родные даты $eng=array(" ","Thunderstorms","Sunny","Partly Cloudy", "Showers","Rain","Mostly Cloudy","Tstorms","Drizzle","Cloudy", "Flurries","Fog","High","Low","Clear","Sleet","Rain/snow", "Snow Showers","Mixed Snow", "Rain", "Snow", "Mixed"); // английские описания погоды $rus=array(" ","гроза","ясно","переменная облачность", "ливень","дожди","облачно","гроза","изморось","пасмурно", "снегопад","туман","день","ночь","ясно","дождь со снегом", "дождь со снегом","мокрый снег","снег с дождем","снег", "переменно"); // российские аналоги погоды $brdcolor='#ffffff'; // цвет рамки таблицы прогноза (белый) $bgcolor='#eeeeee'; //цвет фона ячеек таблицы (лучше - цвет фона страницы) // А Здесь начинается код программы, который изменять не придется. // занимаемся созданием даты, выводимой на экран.

Функция time() даст нам текущее время. Функцией date(d." ".M,$t[$i]) получаем дату текущего и последующих 4 дней, а date(D,$t[$i]) дает нам дни недели всех 5 дней. А затем переводим даты с английского языка на родной.

$t=array(4);
$d=array(4);
$dn=array(4);
for ($i=0; $i<=4; $i++) {
$t[$i]=time()+$i*86400;
$d[$i]=date(d." ".M,$t[$i]);
$dn[$i]=date(D,$t[$i]);
 // переводим слова в дате и получаем даты на родном языке
for ($j=0; $j<sizeof($endat); $j++) {
$d[$i]=str_replace($endat[$j],$rudat[$j],$d[$i]);
$dn[$i]=str_replace($endat[$j],$rudat[$j],$dn[$i]);
} // и получаем даты на языке, которым разговаривает наш нонешний Вова
}

// начинаем обрабатывать страницу.
// Выясняем строки начала и конца таблицы с прогнозом погоды.
// Затем, будем работать именно с этим блоком.



$screen=file($adr); // читаем страницу с прогнозом погоды в переменную $screen


for ($i=1; $istrpos($screen[$i],$begin_screen)==false) { //находим начало таблицы с прогнозом
if (strpos($screen[$i],$end_screen)==false) { //находим ее конец
}
else {$m=$i; // $m - номер последней строки таблицы
}
}
else {$k=$i; // $k - номер первой строки таблицы
}
} // Получаем с $screen[$k] по $screen[$m] - нашу таблицу с погодой.
// Потом будемработать именно с ней, чтобы не было лишних совпадений, и
// быстро работала программа.
// Можно ее выводить в "родном дизайне, но нам это не нравится
// Начинаем искать полезную информацию.

$grad=array(9); // массив из 10 чисел градусов температуры окружающей среды

$zed=0; // счетчик градусов
for ($i=$k; $i<=$m; $i++) { //работаем с градусами
//если нет градусов в строке (если нет фразы, стоящей перед градусами.
if (strpos($screen[$i],$before_gradus,0)==false) { 
}
else {// если есть градусы в строке
$string_grad=$screen[$i]; // сохраняем строку с градусами в переменную
// разбиваем строку на массив строк по разделителю, которым
// является фраза перед градусами, таким образом, мы получаем в
// 1 элементе массива строку, которая начинается собственно с
// самого градуса погоды.
$string_grad=explode($before_gradus,$string_grad); 
// определяем позицию начала фразы, идущей после градуса.
$end_grad=strpos($string_grad[1],$post_gradus,0); 
// первый градус получаем, как подстрока, с 0-го символа до начала фразы после градуса.
$grad[$zed]=substr($string_grad[1],0,$end_grad); 
$zed++; // инкремент счетчика градусов
$end_grad=strpos($string_grad[2],$post_gradus,0);
$grad[$zed]=substr($string_grad[2],0,$end_grad); // второй градус
$zed++; // инкремент счетчика градусов
}
} // в результате чего, мы получили все градусы на нашей странице

// переводим фаренгейты в цельсии
for ($i=0; $i<=9; $i++) {$grad[$i]=round(5/9*($grad[$i]-32));
}
// в варианте с забиранием информации со страницы с цельсиями
// эту строку стоит просто закомментировать. Я оставил так, просто каприз.
// переводим фаренгейты в цельсии

// находим слова погоды абсолютно аналогично поиску градусов
$zed=0; // счетчик описаний погоды
for ($i=$k; $i<=$m; $i++) { //работаем с описаниями
//если нет описания погоды в строке
if (strpos($screen[$i],$before_forecast,0)==false) { 
}
else {// если есть описания в строке
$string_grad=$screen[$i]; // сохраняем строку с описаниями в переменную
$string_grad=explode($before_forecast,$string_grad);
$end_grad=strpos($string_grad[1],$post_forecast,0);
$forec[$zed]=substr($string_grad[1],0,$end_grad);
// перебираем все варианты слов в описаниях
for ($j=0; $j<sizeof($eng); $j++) { 
// переводим слова
$forec[$zed]=str_replace($eng[$j],$rus[$j],$forec[$zed]); 
}
$zed++; // инкремент счетчика описаний
}
} // в результате чего, мы получили все описания погоды на нашей странице

$zed=0; // счетчик слов картинок аналогично
for ($i=$k; $i<$m; $i++) { //работаем с картинками
//если нет описания погоды в строке
if (strpos($screen[$i],$before_image,0)==false) { 
}
else {// если есть картинки в строке
$string_grad=$screen[$i]; // сохраняем строку с картинками в переменную
$string_grad=explode($before_image,$string_grad);
$end_grad=strpos($string_grad[1],$post_image,0);
$for_img[$zed]=substr($string_grad[1],0,$end_grad);
$zed++; // инкремент счетчика картинок
}
} // в результате чего, мы получили все картинки на нашей странице




?>
// публикуем результаты:

for ($i=0; $i<=4; $i++) { echo ""; } ?>
$d[$i]< br>$dn[$i]
echo $brdcolor; ?> >
for ($i=0; $i<=4; $i++) { $zed1=$zed+1; echo ""; $zed=$zed+2; } ?>
.$forec[$i].

".$forec[$i]."

".$grad[$zed]."°C
".$grad[$zed1]."°C

Картинки можно привязать к картинкам Яхи (названия аналогичных по погоде совпадают, как в моем случае), а можно сделать массивы соответствия слов-описаний погоды и Ваших картинок. Это по-желанию. Что долговечнее, трудно судить. И фразы-описания они могут изменить, и картинки переименовать. Можно, конечно договориться с админом Яхи, чтобы они не меняли один из этих элементов и отталкиваться от него, но у меня не было его телефона:о)

Теперь программа работает, и ее можно вставлять в свой дизайн.



Чтобы обсудить это в форуме, нажмите здесь.


Хостинг-источник: http://karman.com.ua
Есть вопросы о хостинге и о сайтах?
и получи ответ от профессионалов, которые обожают помогать людям :).

© СПД Праведно-Счастливый Аладдин Ярославович, 2004-2008. Все права защищены. При цитировании материалов ссылка на www.karman.com.ua обязательна. Редакция "Кармана" может не разделять точку зрения авторов статей, сообщений и ответственности за их содержание не несет.

Быстрый переход к содержимому сайта Karman.com.ua:
Новости, советы, углубленные знания, знания для новичков, законодательство, интересные скрипты, фотогалереи, отчеты, статьи о хостинге: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24
Часто задаваемые общие вопросы о хостинге, про FTP, PHPMyAdmin и MySQL, CPanel, Предустановленные скрипты, WHM, Cron, .htaccess, SSH, Паролирование директорий, О доменах, о работе с сайтом, о Раскрутке сайта, об Электронной почте, про Основы web-программирования: 0, 1
Энциклопедия основных терминов хостинга, программного обеспечения, железной стороны хостинга, технологий, электронной почты и доменов: 0, 1, 2, 3, 4, 5, 6
Сайты о хостинге (форумы, хостинг-провайдеры, студии веб-дизайна, домен-регистраторы, инструментарии в помощь вебмастеру): 0, 1, 2

Rambler's Top100