PHP парсер контента со страницы сайта

kreator

Создатель
Заблокирован
Регистрация
18 Июн 2011
Сообщения
113
Реакции
6
  • Автор темы
  • Заблокирован
  • #1
Наткнулся на интересный и с виду простой скрипт:
Код:
<?
//-----------------------------------------------------------
// Граббер цитат с Цитатника Рунета bash.org.ru
// Загружает и парсит главную страницу, цитаты помещает в массив
//-----------------------------------------------------------
// Получить html-страницу
$grab=@file_get_contents("http://bash.org.ru");
if ($grab) {
// Заменить теги переноса строки на простые переносы строки
$grab=str_replace("<br>","\n",$grab);
// Получить регулярным выражением тексты цитат
preg_match_all("/<div class=\"vote\">([^>]*>){12}([^<]*)/",$grab,$matches);
// В массиве содержатся все найденные строки
for ($i=0; $i<count($matches[2]); $i++) {
echo nl2br($matches[2][$i]);
echo '<hr>';
}
}
else {
echo "Connection Error";
}
Но он к сожалению не работает ... Может кто подскажет почему?
Собственно раз на примере баша попался скрипт на его примере и спрошу.

Нужно сграбить таким образом контент с некой страницы.
Допустим заключен этот контент на странице в тег <div class="text">ТУТ КОНТЕНТ</div>
Так контент заключен и на БAIIIE.
 
  • Заблокирован
  • #2
  • Автор темы
  • Заблокирован
  • #3
Ни во первых, ни во вторых, никак ...
Думал может защита какая, пробовал другой сайт - то же самое.
p.s. Хостинг позволяет выполнять данные команды. (думаю будет такой вопрос)
 
  • Заблокирован
  • #4
Юзай

PHP:
<html>
<head></head>
<body>
<?php
function browser($url) {
$url="http://bash.im/";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)");
$html = curl_exec($ch);
curl_close($ch);
return $html;
}
preg_match_all('~<div class="text">(.*?)</div>~is', browser($url), $text);
print implode('<br />', array_slice($text[1], 0, 3)); //выводит первые три цитаты
?>
</body></html>


1b6acd8729cd.png
 
  • Автор темы
  • Заблокирован
  • #5
Шакарно, буду изучать недры необъятного пхп.

Немного решив доработать код:
Код:
<html>
<head></head>
<body>
<?php
$page = $_GET['page'];
function browser($url) {
$url="http://bash.im/quote/1";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)");
$html = curl_exec($ch);
curl_close($ch);
return $html;
}
preg_match_all('~<div class="text">(.*?)</div>~is', browser($url), $text);
$base=implode('<br />', array_slice($text[1], 0, 1));
print $base;
print $page;
?>
</body></html>
Изменив строку $url с главной страницы на первую цитату и $base=implode('<br />', array_slice($text[1], 0, 1));
код выводит одну единственную первую цитату.
Добавил переменную передаваемую $page передаваемую GET.
Собственно переменная хорошо передается сайт.ру/скрипт.пхп?page=1
Голову сломал как прикрутить эту переменную в строку $url.
PHP:
$url="http://bash.im/quote/$page";
не катит.
Простите, может для вас гуру кажется глупости спрашиваю, но мне реально помогает - хорошо обучают ваши решения.
Спасибо огромное за помощь.
 
  • Заблокирован
  • #6
Так или не так?

PHP:
<html>
<head></head>
<body>
<?php
$page = $_GET['page'];
function browser($url) {
$url = "http://bash.im/quote/" .$_GET['page'];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)");
$html = curl_exec($ch);
curl_close($ch);
return $html;
}
preg_match_all('~<div class="text">(.*?)</div>~is', browser($url), $text);
$base=implode('<br />', array_slice($text[1], 0, 1));
print $base;
print $page;
 
?>
</body></html>
 
  • Заблокирован
  • #7
Думать не умею... Сделал рандомно. :D
По аналогии или по другому сделаешь себе. Уже спать хочу.

PHP:
<html>
<head>
</head>
<body>
<?php
$page = $_GET['page'];
function browser($url) {
$url = "http://bash.im/quote/" .$_GET['page'];
echo "<meta http-equiv=refresh content=\"3; url=1.php?page=".rand(0,500)."\">"; //3 секунды и обновление, заменить имя файла/скрипта на свое 1.php, 500 страниц в рандоме
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)");
$html = curl_exec($ch);
curl_close($ch);
return $html;
}
preg_match_all('~<div class="text">(.*?)</div>~is', browser($url), $text);
$base=implode('<br />', array_slice($text[1], 0, 1));
print $base;
?>
</body></html>
 
Назад
Сверху