Новости

Парсер новостей с Google
Посетитель
mistifikator
Сообщений: 90
4956 дней назад
Я тут одну штуку надоумел сначала хотел написать только в личку админу, но потом подумал может это кому небудь ещё будет полезно.

Вобщем это скрипт создан для получение новостей с Google News по поиску через RSS, с последующим добавление на сайт. Скрипт постарался хорошо прокомментировать.
Код PHP:
  1.  
  2. <?php
  3. // Содинение с MySQL
  4. /*
  5. * Не забудьте исправить параметры хоста, рута и имя db.
  6. */
  7. $dbcnx = mysql_connect('localhost', 'root', 'passwd')
  8. or die("Соединение не установлено: " . mysql_error());
  9.  
  10. if ($dbcnx)
  11. {
  12. mysql_select_db('db',$dbcnx)
  13. or die ('База не доступна: ' . mysql_error());
  14. }
  15.  
  16. // URL rss на новости
  17. $rss = 'http://news.google.com/news?q=%D1%8F%D0%BA%D1%83%D1%82%D0%B8%D1%8F&output=rss';
  18.  
  19. $xml = @simplexml_load_file($rss);
  20. if ( $xml===false ) die('Ошибка парсера, URL: '.$rss);
  21. foreach ( $xml->xpath('//item') as $item ) {
  22. /*
  23. * Дальше вместо name_table нужно вписать название таблици(если есть префикс, то его писать тоже.
  24. * Вместо field,field, field вписать название полей например: id, title_news, description_news и т.д.
  25. * '$item->title', '$item->link', '$item->ldescription', 'Новостной бот' - это переменные(значениче) в которых хранятся заголовки, описание, линки и прочие.
  26. *
  27. * ВНИМАНИЕ! Если первое поле называется например title то значение нужно выстовлять $item->title итак строго по порядку.
  28. *
  29. * ПРИМЕР
  30. * mysql_query("INSERT INTO `news` (title, link, description, user)
  31. * VALUES ('$item->title', '$item->link', '$item->ldescription', 'Новостной бот')");
  32. *
  33. * ПРИМЕЧАНИЕ
  34. * Не забудьте выставить имя пользователя.
  35. * Подробно о RSS можно почитать на http://ru.wikipedia.org/wiki/Rss
  36. * Для Google News соответствует версия 2.0
  37. */
  38. mysql_query("INSERT INTO `name_table` (field,field, field)
  39. VALUES ('$item->title', '$item->link', '$item->description', 'Новостной бот')")
  40. or die("Запись не добавлена");
  41. }
  42. mysql_close($dbcnx);
  43. ?>
  44.  
  45.  
Запускать в браузере или по SSH.
Если будут вопросы по настройке таблице, спрашивайте.

UPD: Парсит он по слову "Якутия".
Редактировалось: 4 раза (Последний: 6 ноября 2009 в 03:08)
Посетитель
mistifikator
Сообщений: 90
4956 дней назад
Дописал скрипт для этого сайта:

SQL дамп:
Код PHP:
  1. -- phpMyAdmin SQL Dump
  2. -- version 3.1.3.1
  3. -- http://www.phpmyadmin.net
  4. --
  5. -- Хост: localhost
  6. -- Время создания: Ноя 04 2009 г., 20:07
  7. -- Версия сервера: 5.1.33
  8. -- Версия PHP: 5.2.9
  9.  
  10. SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
  11.  
  12. --
  13. -- База данных: `news_aykhal`
  14. --
  15.  
  16. -- --------------------------------------------------------
  17.  
  18. --
  19. -- Структура таблицы `news_aykhal`
  20. --
  21.  
  22. CREATE TABLE IF NOT EXISTS `news_aykhal` (
  23. `id` int(255) NOT NULL AUTO_INCREMENT,
  24. `title` varchar(255) NOT NULL,
  25. `des` text NOT NULL,
  26. `date` varchar(255) NOT NULL,
  27. `link` varchar(255) NOT NULL,
  28. PRIMARY KEY (`id`)
  29. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
  30.  
  31. --
  32. -- Дамп данных таблицы `news_aykhal`
  33. --
Парсер новостей:
Код PHP:
  1. <?php
  2. // Содинение с MySQL
  3. /*
  4. * Не забудьте исправить параметры хоста, рута и имя db.
  5. */
  6. $dbcnx = mysql_connect('localhost', '', '')
  7. or die("Соединение не установлено: " . mysql_error());
  8.  
  9. if ($dbcnx)
  10. {
  11. mysql_select_db('news_aykhal',$dbcnx)
  12. or die ('База не доступна: ' . mysql_error());
  13. }
  14.  
  15. // URL rss на новости
  16. $rss = 'http://news.google.com/news?q=%D1%8F%D0%BA%D1%83%D1%82%D0%B8%D1%8F&output=rss';
  17.  
  18. $xml = @simplexml_load_file($rss);
  19. if ( $xml===false ) die('Ошибка парсера, URL: '.$rss);
  20. foreach ( $xml->xpath('//item') as $item ) {
  21. /*
  22. * Дальше вместо name_table нужно вписать название таблици(если есть префикс, то его писать тоже.
  23. * Вместо field,field, field вписать название полей например: id, title_news, description_news и т.д.
  24. * '$item->title', '$item->link', '$item->ldescription', 'Новостной бот' - это переменные(значениче) в которых хранятся заголовки, описание, линки и прочие.
  25. *
  26. * ВНИМАНИЕ! Если первое поле называется например title то значение нужно выстовлять $item->title итак строго по порядку.
  27. *
  28. * ПРИМЕР
  29. * mysql_query("INSERT INTO `news` (title, link, description, user)
  30. * VALUES ('$item->title', '$item->link', '$item->ldescription', 'Новостной бот')");
  31. *
  32. * ПРИМЕЧАНИЕ
  33. * Не забудьте выставить имя пользователя.
  34. * Подробно о RSS можно почитать на http://ru.wikipedia.org/wiki/Rss
  35. * Для Google News соответствует версия 2.0
  36. */
  37. mysql_query("INSERT INTO `news_aykhal` (title, des, date, link)
  38. VALUES ('$item->title', '$item->description', '$item->pubDate', '$item->link')")
  39. or die("Запись не добавлена");
  40. }
  41. mysql_close($dbcnx);
  42. ?>
API для новостей:
Код PHP:
  1. <?php
  2. // Содинение с MySQL
  3. /*
  4. * Не забудьте исправить параметры хоста, рута и имя db.
  5. */
  6. $dbcnx = mysql_connect('localhost', '', '')
  7. or die("Соединение не установлено: " . mysql_error());
  8.  
  9. if ($dbcnx)
  10. {
  11. mysql_select_db('news_aykhal',$dbcnx)
  12. or die ('База не доступна: ' . mysql_error());
  13. }
  14.  
  15. // Выводим последнии 10 новостей.
  16. // Вместо тегов <pre> можно вставить свои.
  17. $sql = mysql_query("SELECT * FROM `news_aykhal` ORDER BY id DESC LIMIT 10");
  18. $row = mysql_fetch_array($sql);
  19. do {
  20. echo '<pre>'.$row['title'].'</pre>';
  21. echo '<pre>'.$row['des'].'</pre>';
  22. echo '<pre>'.$row['date'].'</pre>';
  23. echo '<pre>'.$row['link'].'</pre>';
  24. } while($row = mysql_fetch_array($sql));
  25.  
  26. mysql_close($dbcnx);
  27. ?>
Редактировалось: 2 раза (Последний: 5 ноября 2009 в 02:49)
Посетитель
mistifikator
Сообщений: 90
4956 дней назад
Для простоты добавления новостей на сайт можно использовать тег IFRAME ( http://www.htmlbook.ru/html/iframe.html ).
В нём подключать естественно api новостей.
Администратор
Кравцов Лука
Медаль Грамота
Сообщений: 1468
Айхал
21 день назад
Вот как настоящий отец, забыл когда день рождения у моего детища)))
2008-03-13 дата регистрации нашего сайта!
zst нам уже восьмой годик пошел))
Посетитель
Onliner
Сообщений: 122
Айхал
2963 дня назад
Кравцов Лука, а почему я тогда помню дату именно 26го марта?)) Просто я запомнил её потому что в этот день двое моих знакомых родились))

Если ты дважды подумаешь, прежде чем один раз сказать, ты скажешь вдвое лучше.
Администратор
Кравцов Лука
Медаль Грамота
Сообщений: 1468
Айхал
21 день назад
Onliner, вот этого не знаю))
Посетитель
Onliner
Сообщений: 122
Айхал
2963 дня назад
Кравцов Лука, до меня позже дошло smile я в группе писал))
13.03.2008 это дата зачатия laugh а 26.03.2008 это дата рождения(запуска) сайта))
Должно же быть где-то на сайте или новость, или на форуме обсуждение давнишнее))
Точно помню что-то такое было и именно 26го марта smile
С моим тырнетом не могу искать сейчас подтверждение)

Если ты дважды подумаешь, прежде чем один раз сказать, ты скажешь вдвое лучше.
Администратор
Кравцов Лука
Медаль Грамота
Сообщений: 1468
Айхал
21 день назад
Onliner, хорошо, что напомнил, так бы и совсем забыл!
Посетитель
Onliner
Сообщений: 122
Айхал
2963 дня назад
Кравцов Лука, не за что joke но я ошибся sad вчера, видать, так выпить хотел, что повод искал, а мне смену поставили laugh я посмотрел ночью по форумам и действительно, никакого 26 марта нет sad ну что ж, бывает и хуже smile главное месяц не перепутал smile

Если ты дважды подумаешь, прежде чем один раз сказать, ты скажешь вдвое лучше.
Посетитель
Дядя Вова
Медаль Грамота Супер кубок!
Сообщений: 868
Уррюпинсск
12 дней назад
Вот как настоящий отец, забыл когда день рождения у моего детища)))
laugh Не расстраивайся Лука,все равно ты наш..."папаня сайтовский", laugh а мы усе твои отпрыски. dance
А отпраздновать...да отпразднуем в любое время и жахнем не один стопарик.
С днем Рождения наш ЛЮБИМЫЙ САЙТ!!!!!!!!!!!!!!! dance dance dance

Судьба играет человеком,а человек играет на...трубе.
|
Перейти на форум:
Быстрый ответ
У вас нет прав, чтобы писать на форуме.