Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помогите с парсером.
 
 автор: RealMadrid   (13.09.2009 в 14:21)   письмо автору
 
 

Здравствуйте программисты форума softtime.ru!У меня есть тут одна идея, только вот воплотить в реальность без вас я не смогу((Пожалуйста помогите,
я хотел спарсить ленту новостей к себе на сайт http://football.kulichki.net/spain/index.htm я его сграббить то сграббил,
вот пример граба

<?php

echo '<div class="bmenu">Новости Примеры</div>';

$filename='n.php';     //?&#65533;мя этого файла
if(!isset($_GET['id'])){
$address='http://football.kulichki.net/spain/index.htm';
$file=file_get_contents($address);
$file=str_replace("<h5></h5>","",$file);
$file=iconv("windows-1251","UTF-8",$file);
preg_match_all("|<font color=\"#808080\">Новости:</font>(.*?)<center>
|is"
,$file,$arr);
$count count($arr[0]);


// Расчет навигации

$end $start $kmess;
$end $end $count $end $count;

for(
$i $start$i$end$i++) {
$arr[1][$i]=str_replace("/worldnews/news.htm?",$_SERVER["PHP_SELF"].'?id=',$arr[1][$i]);
echo 
$arr[1][$i].'<br>';//Дата-время
}
if (
$count $kmess) {
echo 
'<p>';
echo 
pagenav('n.php?'$start$count$kmess);
echo 
'</p>';
}
}else{     
//переход по ссылке
$dir_for_news=$_SERVER['DOCUMENT_ROOT'].'/news_spain';
if(
file_exists("$dir_for_news/$_GET[id]")){
$file=file_get_contents("$dir_for_news/$_GET[id]");
}else{
$address="http://football.kulichki.net/worldnews/news.htm?$_GET[id]";
$file=file_get_contents($address);
$file=iconv("windows-1251","UTF-8",$file);
$news_file_name="$dir_for_news/$_GET[id]";
$fh fopen($news_file_name'w');
fwrite($fh$file);
fclose($fh);
}
preg_match("|<DIV class=title_n>(.*)<DIV class=date_n>.*?</DIV>|is",$file,$res);
$res[2]=strip_tags($res[2]);
echo 
"<div><a href='$filename'>Назад</a></div>";
echo 
$res[1];     //Заголовок
}


?>




но мне хочется чтобы граб был похож на этот

<?php

//Путь к Вашему xml файлу

$xml_file="http://meteoinfo.ru/xml3/export/pay/1/1.xml";

 

//Подключение к БД, укажите адрес сервера, имя пользователя, пароль и название БД.

$host='site.ru';

$user='user';

$pasd='pass';

$db='forecast';

 

mysql_pconnect($host,$user,$pasd) or die ('Нет подключения к базе!!!');

mysql_select_db($db) or die ('Ошибка при подключении!!!');

//Копирование xml-файла к себе на хостинг

function http_get($url)

{

$buffer "";

$url_stuff parse_url($url);

$port = isset($url_stuff['port']) ? $url_stuff['port'] : 80;

$fp fsockopen($url_stuff['host'], $port);

$query 'GET ' $url_stuff['path'] . " HTTP/1.0\n";

$query .= 'Host: ' $url_stuff['host'];

$query .= "\n\n";

fwrite($fp$query);

while (
$tmp fread($fp1024))

{

$buffer .= $tmp;

}

preg_match('/Content-Length: ([0-9]+)/'$buffer$parts);

return 
substr($buffer, - $parts[1]);

}

$fp fopen ("forecast.xml""w+");

fwrite ($fphttp_get($xml_file));

fclose ($fp);

//Парсинг xml-файла

$xml simplexml_load_file("forecast.xml");

foreach (
$xml->town as $town) {

$name=iconv("utf-8","windows-1251",$town['name']);

$ind=$town['id'];

$country=iconv("utf-8","windows-1251",$town['country']);

$region=iconv("utf-8","windows-1251",$town['region']);

foreach (
$town->date as $date) {

$day=$date['day'];

$tday=$date->tday;

$tnight=$date->tnight;

$prec=$date->prec;

$prec_prob=$date->prec_prob;

$wind_dir=$date->wind_dir;

$windspeed=$date->windspeed;

$weather_conditions=iconv("utf-8","windows-1251",$date->weather_conditions);

$pday=$date->pday;

$pnight=$date->pnight;

//Запись иформации в БД

$res=mysql_query("insert into forecast
(Ind,Station,Country,Region,dat,tday,
tnight,prec,prec_prob,wind_dir,wind_speed,
weather_conditions,pday,pnight) values
("
.$ind.",\"".$name."\",\"".$country."\",\"".$region
."\",\"".$day."\",".$tday.",".$tnight
.",".$prec.",".$prec_prob.",".$wind_dir
.",".$windspeed.",\"".$weather_conditions
."\",".$pday.",".$pnight.")");

}

}

 

?>

Это база данных.

USE `forecast`;
CREATE TABLE `forecast` (
`id` int(11) NOT NULL auto_increment,
`Ind` mediumint(9) default NULL,
`Station` varchar(255) default NULL,
`Country` varchar(255) default NULL,
`Region` varchar(255) default NULL,
`dat` date default NULL,
`tday` smallint(6) default NULL,
`tnight` smallint(6) default NULL,
`prec` smallint(6) default NULL,
`prec_prob` smallint(6) default NULL,
`wind_dir` smallint(6) default NULL,
`wind_speed` smallint(6) default NULL,
`weather_conditions` varchar(255) default NULL,
`pday` smallint(6) default NULL,
`pnight` smallint(6) default NULL,
PRIMARY KEY (`id`)
) TYPE=MyISAM;


Заранее человеческое спасибо.!

  Ответить  
 
 автор: cheops   (13.09.2009 в 15:21)   письмо автору
 
   для: RealMadrid   (13.09.2009 в 14:21)
 

Не очень понятно, что значит "похож"?

  Ответить  
 
 автор: RealMadrid   (13.09.2009 в 15:39)   письмо автору
 
   для: cheops   (13.09.2009 в 15:21)
 

ну как бы написать бы по такому же принципу,пожалуйста только поймите правильно

  Ответить  
 
 автор: cheops   (13.09.2009 в 15:48)   письмо автору
 
   для: RealMadrid   (13.09.2009 в 15:39)
 

Не очень понятно... дело в том, что во-втором пример как я понял разбирается XML-файл, а в первом HTML. Разумеется подходы разные. Или имеется в виду что-то другое? Например, использование функции http_get() или помещение данных в таблицу базы данных? Просто различий достаточно много и не понятно, какие вас в первую очередь интересуют, а главное, что вызывает сложность?

  Ответить  
 
 автор: RealMadrid   (13.09.2009 в 15:51)   письмо автору
 
   для: cheops   (13.09.2009 в 15:48)
 

хотелось как бы помещать в базу данных

  Ответить  
 
 автор: cheops   (13.09.2009 в 16:00)   письмо автору
 
   для: RealMadrid   (13.09.2009 в 15:51)
 

Для этого сначала нужно спроектировать таблицу, кроме даты и времени и содержимого ссылки http://football.kulichki.net/worldnews/news.htm?$_GET[id], что в ней будет хранится? Какие бы поля вы хотели бы видеть в этой таблице?

  Ответить  
 
 автор: RealMadrid   (13.09.2009 в 16:05)   письмо автору
 
   для: cheops   (13.09.2009 в 16:00)
 

http://football.kulichki.net/worldnews/news.htm?$_GET[id] это как бы вторая страница которую грабит скрипт.Хотелось бы видеть в таблице все ссылки на новости и сами новости,и чтобы через определенное время обновлялся скрипт и добавляло новости автоматически в базу.ну типа cron

  Ответить  
 
 автор: RealMadrid   (13.09.2009 в 16:57)   письмо автору
 
   для: RealMadrid   (13.09.2009 в 16:05)
 

как вы думаете это возможно?

  Ответить  
 
 автор: cheops   (13.09.2009 в 17:11)   письмо автору
 
   для: RealMadrid   (13.09.2009 в 16:57)
 

Это возможно, но слишком условия не четкие и может потребоваться приличное количество времени на создание такого парсера. Лучше разбить задачу на отдельные атомарные фрагменты, которые не будут требовать много времени для реализации - тогда найдется больше желающих потратить на это время. Потом фрагменты можно объеденить в рабочее приложение. Сразу большой объем вызывает у многих отторжение - с одной стороны тратиться много времени на реализацию, с другой стороны другие участники форума, у которых возникают сложности вряд ли будут разбираться в большом объеме кода. Получается работа с низкой отдачей (в обучающем плане), более характерная для коммерческих проектов (т.е. проблема идет в разрез с задачами форума).

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования