|
Автор |
Сообщение |
alex2103
Новенький
Зарегистрирован: 15.10.2008 Сообщения: 57
|
|
|
|
Добрый день
купил вашу книгу(Профессиональное программирование на php) очень понравилась
но возник один вопрос по грабберу новостей
если можна более подробней о создании файла news.php
Заранее спасибо |
|
Вернуться к началу |
|
|
den
Старожил
Зарегистрирован: 31.01.2006 Сообщения: 13870 Откуда: Кировоград, Украина
|
|
|
|
что именно непонятно? |
|
Вернуться к началу |
dhsilabs@jabber.ru |
|
|
alex2103
Новенький
Зарегистрирован: 15.10.2008 Сообщения: 57
|
|
|
|
вот я создал файл index.php для вывода новостей
выводит нормально, а как заменить ссылки
<?php
include "../util/top_site_first.php";
$txt = join(' ', file('http://сайт/news/import.php'));
echo $txt;
include "../util/bottom_site_first.php";
?>
а дальше что-то не получается |
|
Вернуться к началу |
|
|
den
Старожил
Зарегистрирован: 31.01.2006 Сообщения: 13870 Откуда: Кировоград, Украина
|
|
|
|
А причем тут файл import? Он импортирует новости с RSS-ленты на сайт. Файл news.php - это граббер. Вы передаете ему ссылку на новость, а он ее извлекает из дизайна сайта. Как правило, все новостные страницы построены по принципу:
HTML_КОД_1
Текст новости
HTML_КОД_2
Наша задача извлечь HTML-код новости, находящийся между КОД1 и КОД2. Потом мы удаляем из кода новости лишние теги, оставив только те, что нам нужны, например, P, IMG и выводим новость
<?php
// получаем Web-страницу с новостью
// переменная $u содержит URL страницы
$f=join('<BR>', file($u));
// начало новости
$begin=strpos(strtolower($f), "<h1>", 0);
// конец новости
$end=strpos(strtolower($f), '</td></tr></table>', $begin);
// вырезаем то, что нам нужно - текст новости
$txt=substr($f, $begin, $end-$begin);
// некоторые сайты используют кодировку KOI8-R, поэтому
// данная строка может понадобиться для перекодирования из KOI8-R
// в windows-1251
// $txt = convert_cyr_string($txt,"k","w");
// удаляем все теги, кроме <p> и <img>
$txt = strip_tags($txt, '<p><img>');
// выводим текст новости
echo $txt;
?> |
|
Вернуться к началу |
dhsilabs@jabber.ru |
|
|
alex2103
Новенький
Зарегистрирован: 15.10.2008 Сообщения: 57
|
|
|
|
я понял как статья вырезается, а как вывести список новостей с нужной ссылкой
$txt = join('',file('http://site/import.php')); |
|
Вернуться к началу |
|
|
alex2103
Новенький
Зарегистрирован: 15.10.2008 Сообщения: 57
|
|
|
|
я думаю проблема в передаче юрл статьи
когда я нажимаю на статью мне выдает вот:
Warning: file($u) [function.file]: failed to open stream: No such file or directory in /home/site/data/www/site/news/news.php on line 5
Warning: join() [function.join]: Invalid arguments passed in /home/site/data/www/site/news/news.php on line 5
если я в ручную вставлю адрес$f=join('<BR>', file('http://itnews.com.ua/44252.html')); статьи то нормально |
|
Вернуться к началу |
|
|
alex2103
Новенький
Зарегистрирован: 15.10.2008 Сообщения: 57
|
|
|
|
спасибо разобрался, взял вручную переписал и работает |
|
Вернуться к началу |
|
|
den
Старожил
Зарегистрирован: 31.01.2006 Сообщения: 13870 Откуда: Кировоград, Украина
|
|
Вернуться к началу |
dhsilabs@jabber.ru |
|
|
alex2103
Новенький
Зарегистрирован: 15.10.2008 Сообщения: 57
|
|
|
|
а подскажи как справиться с xml
<MMWEATHER>
−
<REPORT type="frc3">
−
<TOWN index="34504" sname="%C4%ED%E5%EF%F0%EE%EF%E5%F2%F0%EE%E2%F1%EA" latitude="49" longitude="35">
−
<FORECAST day="9" month="10" year="2008" hour="21" tod="3" predict="18" weekday="5">
<PHENOMENA cloudiness="0" precipitation="10" rpower="0" spower="0"/>
<PRESSURE max="755" min="753"/>
<TEMPERATURE max="12" min="10"/>
<WIND min="3" max="6" direction="0"/>
<RELWET max="81" min="76"/>
<HEAT min="10" max="12"/>
</FORECAST>
−
<FORECAST day="10" month="10" year="2008" hour="3" tod="0" predict="24" weekday="6">
<PHENOMENA cloudiness="0" precipitation="10" rpower="0" spower="0"/>
<PRESSURE max="757" min="755"/>
<TEMPERATURE max="9" min="7"/>
<WIND min="2" max="5" direction="0"/>
<RELWET max="87" min="82"/>
<HEAT min="7" max="9"/>
</FORECAST>
−
<FORECAST day="10" month="10" year="2008" hour="9" tod="1" predict="30" weekday="6">
<PHENOMENA cloudiness="0" precipitation="10" rpower="0" spower="0"/>
<PRESSURE max="759" min="757"/>
<TEMPERATURE max="10" min="8"/>
<WIND min="1" max="3" direction="1"/>
<RELWET max="74" min="69"/>
<HEAT min="8" max="10"/>
</FORECAST>
−
<FORECAST day="10" month="10" year="2008" hour="15" tod="2" predict="36" weekday="6">
<PHENOMENA cloudiness="0" precipitation="10" rpower="0" spower="0"/>
<PRESSURE max="757" min="755"/>
<TEMPERATURE max="13" min="11"/>
<WIND min="1" max="3" direction="6"/>
<RELWET max="48" min="43"/>
<HEAT min="11" max="13"/>
</FORECAST>
</TOWN>
</REPORT>
</MMWEATHER> |
|
Вернуться к началу |
|
|
den
Старожил
Зарегистрирован: 31.01.2006 Сообщения: 13870 Откуда: Кировоград, Украина
|
|
|
|
а что сделать то нужно? |
|
Вернуться к началу |
dhsilabs@jabber.ru |
|
|
alex2103
Новенький
Зарегистрирован: 15.10.2008 Сообщения: 57
|
|
|
|
как вывести у себя на сайте эту информацию |
|
Вернуться к началу |
|
|
alex2103
Новенький
Зарегистрирован: 15.10.2008 Сообщения: 57
|
|
Вернуться к началу |
|
|
den
Старожил
Зарегистрирован: 31.01.2006 Сообщения: 13870 Откуда: Кировоград, Украина
|
|
Вернуться к началу |
dhsilabs@jabber.ru |
|
|
alex2103
Новенький
Зарегистрирован: 15.10.2008 Сообщения: 57
|
|
|
|
Привет подскажи как вырезать статью, а то у меня не получается
вот статьи
http://www.natali.ua/materials/rss10.php
вот я вырезаю статью news.php
<?php
include "../util/top_site_first.php";
// получаем Web-страницу с новостью
// переменная $u содержит URL страницы
$f=join('<BR>', file($u));
// начало новости
$begin=strpos(strtolower($f), '<h1 class="hdb">', 0);
// конец новости
$end=strpos(strtolower($f), '</i></p><br>', $begin);
// вырезаем то, что нам нужно - текст новости
$txt=substr($f, $begin, $end-$begin);
// некоторые сайты используют кодировку KOI8-R, поэтому
// данная строка может понадобиться для перекодирования из KOI8-R
// в windows-1251
$txt = convert_cyr_string($txt,"k","w");
// удаляем все теги, кроме <p> и <img>
$txt = strip_tags($txt, '<p><img>');
// выводим текст новости
echo '<br>'.$txt;
include "../util/bottom_site_first.php";
?>
У меня получается пустая статья
не пойму возможно какая-то мелкая ошибка
если я вывожу $u то получается
http://www.natali.ua/materials/show.html?p=10 т.е. теряется один параметр &id=*
Заранее спасибо
Последний раз редактировалось: alex2103 (Пт Ноя 07, 2008 10:01 am), всего редактировалось 2 раз(а) |
|
Вернуться к началу |
|
|
alex2103
Новенький
Зарегистрирован: 15.10.2008 Сообщения: 57
|
|
|
|
если задать непосредственно адрес статьи // получаем Web-страницу с новостью
// переменная $u содержит URL страницы
$f=join('<BR>', file('http://www.natali.ua/materials/show.html?p=10&id=2295'));
то нормально получается, только картинки не отображаются |
|
Вернуться к началу |
|
|
|
|