 |
28.06.2013, 01:04
|
#1
|
|
|
|
Разведчик
|
 Регистрация: 28.06.2013
 Сообщений: 2
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
|
PHP парс ИТ новостей towave.ru/news/it
От нечего делать и так как впервые на форуме, выкладываю готовый срипт парсинга новостей ИТ тематики с сайта towave.ru/news/it, с последующим добавлением в базу.
Ну, как говорится, меньше слов...
Создайте папку images, и файлы
func_inc_grab.php(инклуд, библиотека)
PHP код:
<?php // Константы. Настраивайте под себя сами define("HOST","localhost"); define("USER","**************"); define("PASS","**************"); define("DATA_BASE","news"); //
//Подключение к БД function mysql_db_conn(){ $link = mysql_connect(HOST, USER, PASS); if (!$link) { die('Не удалось соединиться: ' . mysql_error()); exit(); } $db_selected = mysql_select_db(DATA_BASE, $link); if (!$db_selected) { die ('Не удалось выбрать базу: ' . mysql_error()); exit(); } mysql_set_charset("UTF8", $link); return $link; } //
// Curl запрос... function curl_request($url, $ref){ $ch = curl_init($url); curl_setopt($ch, CURLOPT_USERAGENT, 'Site Parser by Vladislava =)'); curl_setopt($ch, CURLOPT_HEADER,1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_REFERER, $ref); $site = curl_exec($ch); curl_close($ch); return $site; } //
//Функция граббинга инф-ии со страницы function grab_preg($site21){ $result = array(); //ищем тайтл новости preg_match("|<title>(.*)</title>|", $site21, $title); //тайтл новости $title[1] $result['title'] = $title[1]; //Ищем урл картинки preg_match("|<img src=\"http://www.towave.ru/sites/default/files/imagecache/(.*)\" alt=\"|", $site21, $url_img); //урл картинки "http://www.towave.ru/sites/default/files/imagecache/".$url_img[1]; //Ищем дату добавления новости preg_match("|slider-taxonomy\">(.*), <a href=\"/news/|", $site21, $date); //Дата добавления новости $date[1] $result['data'] = $date[1]; //Остался только текст, его и берём $text = explode('Новости интернета</a></span>',$site21); $text = explode('<div class="clearfix"></div>',$text[1]); // Весь хлам удаляем $text = trim(strip_tags($text[0],'<strong><p>')); $result['text'] = $text; //грузим картинку в нашу директорию $s = file_get_contents("http://www.towave.ru/sites/default/files/imagecache/".$url_img[1]); $url_im = './images/'.time().".png"; file_put_contents($url_im, $s); $result['images'] = $url_im; return $result; } // ?>
Исполняемый файл
PHP код:
<?php header("content-type: text/html; charset=utf-8"); require_once"./func_inc_grab.php"; //Скрипт может работать даже при закрытии страницы ignore_user_abort(true); //выставляем ограничение времени выполнения скрипта set_time_limit(0);
//Подключаемся к базе $conn = mysql_db_conn(); $query0 = "SELECT COUNT(`id`) FROM `newsss`"; $ress = mysql_query($query0); $ress1 = mysql_fetch_array($ress, MYSQL_NUM); mysql_close($conn); //Тут количество новостей в базе $ress1[0] //Если кол-во новостей больше 0 то значит скрипт уже запускали if($ress1[0] > 0){ ///////////////////Проверка на существование новoсти/////////////////////// //Обращяемся к стр. парса $site = curl_request('www.towave.ru/news/it', 'www.google.com'); //Ищем ссылки новостей на странице preg_match_all("|<a href=\"/news/(.*)\" class=\"imagecache|", $site, $news_url); //все ссылки новостей "http://www.towave.ru/news/".$news_url[1][от 0 до 14]; $conec = mysql_db_conn(); $query1 = "SELECT `url_news` FROM `newsss` WHERE `id`={$ress1[0]}"; $select = mysql_query($query1); $select1 = mysql_fetch_array($select, MYSQL_NUM); mysql_close($conec); //Тут покоится $select1[0] урл последней новости for($r=0; $r <= 14; $r++){ $pars_url = "http://www.towave.ru/news/".$news_url[1][$r]; if($pars_url == $select1[0]){ echo "Нет новых новостей."; exit(); }else{ $site21 = curl_request($pars_url, 'www.towave.ru/news/it'); $ressss = grab_preg($site21); /// осталось запихнуть новость в базу $conn1 = mysql_db_conn(); $query = "INSERT INTO `newsss`(`title`, `text`, `images`, `url_news`,`data`) VALUES ('{$ressss['title']}','{$ressss['text']}','{$ressss['images']}','{$pars_url}','{$ressss['data']}')"; mysql_query($query); mysql_close($conn1); sleep(2); } } //////////////////////////////////////////////////////////////////// }else{ //Обращяемся к стр. парса $site = curl_request('www.towave.ru/news/it', 'www.google.com'); //Ищем ссылки новостей на странице preg_match_all("|<a href=\"/news/(.*)\" class=\"imagecache|", $site, $news_url); //все ссылки новостей "http://www.towave.ru/news/".$news_url[1][от 0 до 14]; for($r=14; $r >= 0; $r--){ $pars_url = "http://www.towave.ru/news/".$news_url[1][$r]; $site21 = curl_request($pars_url, 'www.towave.ru/news/it'); $ressss = grab_preg($site21); /// осталось запихнуть новость в базу $conn1 = mysql_db_conn(); $query = "INSERT INTO `newsss`(`title`, `text`, `images`, `url_news`,`data`) VALUES ('{$ressss['title']}','{$ressss['text']}','{$ressss['images']}','{$pars_url}','{$ressss['data']}')"; mysql_query($query); mysql_close($conn1); sleep(2); } } ?>
SQL
PHP код:
CREATE TABLE IF NOT EXISTS `newsss` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(255) NOT NULL, `text` text NOT NULL, `images` varchar(255) NOT NULL, `url_news` varchar(255) NOT NULL, `data` varchar(25) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Надеюсь понравится кому-нибудь...
Грабится последние 10 новостей... Добавляются новые, до существующей.
Желательно употреблять Cron`ом
Последний раз редактировалось Deprecated; 28.06.2013 в 01:09.
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 20:54.
|
 |