Парсинг для начинающего

Статус
В этой теме нельзя размещать новые ответы.

yeaahhh

Старатель
Регистрация
8 Май 2008
Сообщения
278
Реакции
11
Друзья. Хотелось бы обучиться рисованию парсеров. Имеются ли у кого-нибудь ссылки на какие-либо достойные материалы по данной теме? Заранее спасибо!
 
Благодарю.. А есть пример реализации парсера в режиме онлайн?
Хотелось бы сделать парсинг футбольных результатов в режиме реального времени..
Или это очень сложно организовать?
 
  • Заблокирован
  • #4
Просто запустить скрипт парсера на крон через какое-то время.
Давайте сайт, который парсить - будет пример.
 
_livetv.ru_
Синий блок с онлайн результатами.. :ah:
Буду очень благодарен..
 
Пойдёт :) А я тогда попробую вывести потом с внутренней страницы на главную в более меньшем объёме..
 
  • Заблокирован
  • #8
Пойдёт :) А я тогда попробую вывести потом с внутренней страницы на главную в более меньшем объёме..
Всё-таки из синей штуки спарсил..
Вот просто парсер:
PHP:
<?php
set_time_limit(0);
$url='http://livetv.ru/livescore/';
$input=file_get_contents($url);

preg_match_all('/<span .*class="liveb1">(.*)<\/span>/', $input, $regs);

preg_match_all('/<span class="whitesmall">(.*)<\/span>/', $input, $regs1);

$k=count($regs1[1]);
$r=0;
$l=1;
for($i=0;$i<$k; $i++)
{
echo 'Вид:';
echo $regs1[1][$i];
echo ' ';
echo $regs[1][$r];
echo 'Счёт:';
echo ' ';
echo $regs[1][$l];
$r=$r+2;
$l=$l+2;
echo '<br>';
}
?>
Если вам нужно постоянное обновление, то можете положить все данные в БД и постоянно обновлять. Например, с помощью этого скрипта(обновление каждые 30 секунд:(
PHP:
<?php
set_time_limit(0);
ignore_user_abort(true);
$p=0;
While($p==0)
{
$ch = curl_init();
	curl_setopt($ch, CURLOPT_URL, 'Путь к скрипту парсеру');
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	$result = curl_exec($ch);
	curl_close($ch);
sleep(30);
}
?>

Ну и на вашем сайте из таблицы достаёте. Можете AJAX прикрутить как на том сайте..
 
Digwnews, спасибо Вам огромнейшее! :ay:
Не могли бы немножко пояснить операции с подсчётом строк(?)..?
Вот не понятны некоторые моменты:
(Когда будет свободное время - не могли бы вы расписать)

Код:
$k=count($regs1[1]); // [COLOR="Red"]&k считаем сколько встречается строк.. а что такое $regs1[1].. Как я понимаю заносим в массив [1] кол-во строк? [/COLOR]
$r=0;
$l=1;
for($i=0;$i<$k; $i++) // Открываем цикл.. [COLOR="Red"]А вот подсчёты числовые с переменными не совсем понимаю.. $i=0, должна быть меньше, чем кол-во найденных строк($k).. $i++? [/COLOR]
{
echo 'Вид:';
echo $regs1[1][$i];
echo ' ';
echo $regs[1][$r];
echo 'Счёт:';
echo ' ';
echo $regs[1][$l];
$r=$r+2; //[COLOR="Red"]и вот эти 2 вычисления не совсем понятны.. [/COLOR]
$l=$l+2;

Извиняюсь, если где-то туплю.. :ah: Хотелось бы закрепить знания..
Заранее благодарен!
Буду теперь на основе этого совершенствовать свои знания в области парсинга, так как пока в php нахожусь на уровне чайника (знаю только html+css и умею выдирать из базы какую-нибудь информацию+ мелкие операции)..

Добавлено через 23 минуты
Как я понял, эти все операции с числами из-за того, что мы выдираем контент, который стоит в одинаковых html-овских тегах..?
 
  • Заблокирован
  • #10
PHP:
 <?php
set_time_limit(0);
$url='http://livetv.ru/livescore/';
$input=file_get_contents($url);//скачиваем страницу

preg_match_all('/<span .*class="liveb1">(.*)<\/span>/', $input, $regs);//выдираем игроков встреч и счета

preg_match_all('/<span class="whitesmall">(.*)<\/span>/', $input, $regs1);//выдираем виды спорта

$k=count($regs1[1]);//считаем количество видов спорта и, соответственно, встреч
$r=0;//если посмотреть с помощью print_r($regs[1]), то можно увидеть, что в массиве под элементами 0 2 4 6 и т.д. встречи, а под 1 3 5 7 счета игр. Вот мы в цикле и прибавляем к счётчику элементов массива 2. $r - счётчик элементов массива в цикле встреч
$l=1;//счётчик элементов массива в цикле счетов
for($i=0;$i<$k; $i++)
{
echo 'Вид:';
echo $regs1[1][$i];
echo ' ';
echo $regs[1][$r];
echo 'Счёт:';
echo ' ';
echo $regs[1][$l];
$r=$r+2;
$l=$l+2;
echo '<br>';
}
?>
Судя по всему Вы плохо разбираетесь в регулярках и массивах. Я подозреваю, что вы не знаете о многомерных массивах.
Поиграйтесь с функцией print_r. Напишите, например:
echo '<pre>';
print_r($regs);
print_r($regs1);

Добавлено через 26 минут
Как я понял, эти все операции с числами из-за того, что мы выдираем контент, который стоит в одинаковых html-овских тегах..?
Операции с числами - это работа с элементами массивов.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху