Выпекаем сайты, находим покупателей

Парсинг цитатника bash.org.ru/bash.im

Php_шный скрипт для парсинга цитатника bash.im (ранее bash.org.ru), с сохранением цитат в mysql-базу.
Парсинг башорг цитатник база bash.im

Создаём mysql таблицу для цитат

CREATE TABLE IF NOT EXISTS `bash` ( 
	`id` int(11) NOT NULL AUTO_INCREMENT, 
	`quote_id` int(11) NOT NULL,  
	`quote_text` mediumtext NOT NULL,  
	PRIMARY KEY (`id`) 
	) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

PHP-код парсинга

//Отключаем лимит ожидания и объявляем переменные
set_time_limit(0);
$content=NULL;$num_pages=NULL;
//Подключение к базе
//Подключаемся к базе данных
define ("HOST", "localhost");
define ("DATABASE", "ваша база данных");
define ("MYSQL_USER", "ваш юзер");
define ("MYSQL_PASS", "ваш пароль");
mysql_connect(HOST, MYSQL_USER, MYSQL_PASS);mysql_query("set names utf8");mysql_select_db(DATABASE);
//Узнаём кол-во страниц
$content=file_get_contents('http://bash.im/');
preg_match('|max="(.*?)"|is',$content,$num_pages);
//Парсим каждую страницу
for ($i=1; $i <= $num_pages[1]; $i++){$i2=false;
	//Грузим страницы, вырезаем цитаты
	$content=file_get_contents('http://bash.im/index/'.$i);
	$quotes=explode('<span class="date">',$content);
	foreach($quotes as $quote){
		if($i2==false){$i2=true;continue;}
		//Номер цитаты
		preg_match('|class="id">#(.*?)</a>|is',$quote,$quote_id);
		//Текст цитаты
		preg_match('|<div class="text">(.*?)</div>|is',$quote,$quote_text);
		//Конвертация текста в UTF-8 и экранирование символов
		$quote_text=strip_tags(addslashes(htmlspecialchars(trim(iconv("windows-1251","UTF-8",$quote_text[1])))));
		//Вписываем в базу
		if($quote_text!=NULL){mysql_query("INSERT INTO `bash`(`id`,`quote_id`,`quote_text`) VALUES (NULL,'{$quote_id[1]}','{$quote_text}')");}
			}
	//От перенагрузки
	sleep(2);
	}

Для обновления базы - используйте ежесуточный парсинг последних 5 страниц

Поменяйте в PHP-коде:
for ($i=1; $i <= $num_pages[1]; $i++){
на
for ($i=$num_pages[1]-5; $i <= $num_pages[1]; $i++){
и
if($quote_text!=NULL){mysql_query("INSERT INTO `bash`(`id`,`quote_id`,`quote_text`) VALUES (NULL,'{$quote_id[1]}','{$quote_text}')");}
на
$st=mysql_result(mysql_query("SELECT COUNT(`id`) FROM `bash` WHERE `quote_id`='{$quote_id[1]}' LIMIT 1"),0);
if($quote_text!=NULL AND $st==0){mysql_query("INSERT INTO `bash`(`id`,`quote_id`,`quote_text`) VALUES (NULL,'{$quote_id[1]}','{$quote_text}')");}


Использовать собранную базу можно для вывода случайных цитат на вашем сайте

$st=mysql_result(mysql_query("SELECT COUNT(`id`) FROM `bash`"),0);
$st=mt_rand(1,$st);
$ls=mysql_fetch_arrow(mysql_query("SELECT * FROM `bash` WHERE `id`='{$st}' LIMIT 1")); echo 'Цитата #'.$ls['quote_id'].'
';
echo $ls['quote_text'];


Вы можете скачать готовую базу данных башорга

База bash.im, парсинг от: 25.12.12

Дополнительно

Для вывода случайных цитат - bash.im предлагает свой виджет для ваших сайтов, а ещё можете посмотреть мою реализацию ротатора башорг-цитат, с помощью представленных в статье методов.

Комментарии и отзывы к материалу

Открыта вакансия на первого комментатора!

Отправить комментарий

Как зовут?

Сообщение