Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

Ответ
 
Опции темы
Старый 28.06.2013, 01:04   #1
 Разведчик
Аватар для Deprecated
 
Deprecated никому не известный тип
Регистрация: 28.06.2013
Сообщений: 2
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
 
Lightbulb 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(HOSTUSERPASS);
    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($chCURLOPT_USERAGENT'Site Parser by Vladislava =)');
    
curl_setopt($chCURLOPT_HEADER,1);
    
curl_setopt($chCURLOPT_RETURNTRANSFER1);
    
curl_setopt($chCURLOPT_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($ressMYSQL_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($selectMYSQL_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` (
  `
idint(11NOT NULL AUTO_INCREMENT,
  `
titlevarchar(255NOT NULL,
  `
texttext NOT NULL,
  `
imagesvarchar(255NOT NULL,
  `
url_newsvarchar(255NOT NULL,
  `
datavarchar(25NOT NULL,
  
PRIMARY KEY (`id`)
ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=
Надеюсь понравится кому-нибудь...

Грабится последние 10 новостей... Добавляются новые, до существующей.
Желательно употреблять Cron`ом

Последний раз редактировалось Deprecated; 28.06.2013 в 01:09.
  Ответить с цитированием
Ответ

Метки
граббинг, грабинг, новостей


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Подсказка] Лента новостей! Ru3 Общение и обсуждение 0 02.03.2012 07:21
Страница новостей для Launcher'а fac277 Web-обвязки для WoW 0 02.01.2012 10:53
[Статья] Несколько приятных новостей! Sandgi Общение и обсуждение S4 League 4 10.01.2010 22:13

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 09:43.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net