парсер онлайну с spaces.ru
<?php
/*
Name: ParseNickSpaces
Author: Kulz (Shipinov Vitaly)
Date: 15/09/2013 17:27
Version: 1.6
*/
include_once 'sys/config.php';
if (!$default_pages || !$default_add || !$default_file) {
if (isset($_GET['config']) == 'return') {
$title = 'Восстановление конфигурационного фаила';
include_once 'sys/head.php';
$open = fopen('sys/config.php', 'w+');
$text = '<?php
# Конфигурационный фаил
# Здесь сохранены юзерские настройки
# По не назначению не применять!!!
$default_pages = "10"; // Сколько страниц парсить
$default_add = "@spaces.ru"; // Что дописывать в конец
$default_file = "result.txt"; // Куда записывать (Путь к файлу)
?>';
fwrite($open, $text);
fclose($open);
echo '<div class="info">Успешно восстановлено!</div>';
echo '<a href="?" class="link">«Назад</a>';
echo foot();
exit;
}
}
if (!$default_pages || !$default_add || !$default_file) {
$title = 'Ошибка';
include_once 'sys/head.php';
echo '<div class="err">Ошибка конфигурационного фаила!</div>';
echo '<a href="?config=return" class="link">Восстановить конфигурационный фаил»</a>';
echo foot();
exit;
}
switch ($_GET['menu']) {
case "logs/look":
$title = 'Просмотр логов';
include_once 'sys/head.php';
echo '<div class="class"><textarea rows="20" cols="90">'.file_get_contents($default_file).'</textarea></div>';
echo '<a href="?menu=logs/clean" class="link">Очистить логи»</a>';
echo '<a href="?" class="link">«Назад</a>';
echo foot();
exit;
break;
case "settings/default":
$title = 'Настройки по умолчанию';
include_once 'sys/head.php';
if (isset($_POST['save'])) {
$default_pages = intval($_POST['pages']);
$default_add = htmlspecialchars($_POST['add']);
$default_file = htmlspecialchars($_POST['file']);
$error = false;
$errort = '';
if (!is_numeric($default_pages) || strLen($default_pages) < 1 || $default_pages < 1) {
$error = true;
$errort .= '<div class="err">Не правильно указано количество страниц для парсинга!</div>';
}
if (strLen($default_file) < 1) {
$error = true;
$errort .= '<div class="err">Не правильно указан файл логов!</div>';
}
if (!$error) {
$open = fopen('sys/config.php', 'w+');
$text = '<?php
# Конфигурационный фаил
# Здесь сохранены юзерские настройки
# По не назначению не применять!!!
$default_pages = "'.$default_pages.'"; // Сколько страниц парсить
$default_add = "'.$default_add.'"; // Что дописывать в конец
$default_file = "'.$default_file.'"; // Куда записывать (Путь к файлу)
?>';
fwrite($open, $text);
fclose($open);
echo '<div class="info">Успешно сохранено!</div>';
}
}
echo $errort;
echo '<div class="class"><form method="post">';
echo 'Кол-во страниц:<br><input type="text" name="pages" value="'.$default_pages.'"><br>';
echo 'Допись в конце:<br><input type="text" name="add" value="'.$default_add.'"><br>';
echo 'Куда записывать:<br><input type="text" name="file" value="'.$default_file.'"><br>';
echo '<input type="submit" name="save" value="Сохранить"></form></div>';
echo '<a href="?" class="link">«Назад</a>';
echo foot();
exit;
break;
case "logs/clean":
if (isset($_POST['no'])) {
echo '<meta http-equiv="refresh" content="0; url=?" />';
}
$title = 'Очистка логов';
include_once 'sys/head.php';
if (isset($_POST['yes'])) {
$open = fopen($default_file, 'w+');
fwrite($open, '');
fclose($open);
echo '<div class="info">Успешно очищено!</div>';
}
echo '<div class="class"><form method="post">';
echo 'Вы действительно хотите очистить логи?<br>';
echo '<input type="submit" name="yes" value="Да"><input type="submit" name="no" value="Нет"></form></div>';
echo '<a href="?" class="link">«Назад</a>';
echo foot();
exit;
break;
}
$title = 'Парсить ники';
include_once 'sys/head.php';
if (isset($_POST['parse'])) {
$pages = intval($_POST['pages']);
$add = htmlspecialchars($_POST['add']);
$error = false;
$errort = '';
if (!is_numeric($pages) || strLen($pages) < 1 || $pages < 1) {
$error = true;
$errort .= '<div class="err">Не правильно указано количество страниц для парсинга!</div>';
}
if (!$error) {
$count = 0;
$time['start'] = microtime(1);
for ($page = 0; $page < $pages; $page++) {
$source = file_get_contents("http://spaces.ru/users/?sort=1&p=".$page."");
preg_match_all('#([a-z0-9]+)</a>#i', $source, $nick);
foreach ($nick[0] as $s) {
if ($s == 'Spaces</a>') {
$s = $s;
}
else
{
$count++;
$s = preg_replace('</a>', '', $s);
$s = preg_replace('#<>#', '', $s);
$open = fopen($default_file, 'a+');
fwrite($open, "".$s."".$add."n");
fclose($open);
}
}
}
if ($count<1) {
echo '<div class="err">Ошибка парсинга! Возможно, у Вас отсутствует подключение к интеренту!</div>';
}
else
{
$time['end'] = microtime(1);
$time['gen'] = round($time['end'] - $time['start'], 3);
echo '<div class="info">Завершено<br>Пропарсено страниц: '.$page.'/'.$pages.'<br>';
echo 'Начало работы: '.date ("d/m/y - H:i:s", $time['start']).'<br>';
echo 'Конец работы: '.date ("d/m/y - H:i:s", $time['end']).'<br>';
echo 'Спарсено ников: '.$count.'<br>';
echo 'Время: '.$time['gen'].' секунд<br></div>';
echo '<a href="?menu=logs/look" class="link">Смотреть логи»</a>';
}
}
}
echo $errort;
echo '<div class="class"><form method="post">';
echo 'Кол-во страниц:<br> <input type="text" name="pages" value="'.$default_pages.'"><br>';
echo 'Допись в конце:<br> <input type="text" name="add" value="'.$default_add.'"><br>';
echo '<input type="submit" name="parse" value="Парсить"></form><br>';
echo '* - Чтобы каждый раз не вводить нужные вам значения, зайдите в "Настройки по умолчанию" и сохраните так, как нужно вам</div>';
if (!isset($_POST['parse'])) {
echo '<a href="?menu=logs/look" class="link">Смотреть логи»</a>';
}
echo '<a href="?menu=settings/default" class="link">Настройки по умолчанию»</a>';
echo '<a href="?menu=logs/clean" class="link">Очистить логи»</a>';
echo foot();
?>