АРМАДА
Проверить базу на принадлежность к DLE
Новая тема Написать ответ Advanced Hosters - профессиональный хостинг

RedSquare
Свой
Зарегистрирован: 06.12.2008
Сообщений: 77
Обратиться по нику
# Добавлено:Пт Dec 26, 2008 8:13 amДобавить в избранноеОтветить с цитатой
Есть база (текстовый файл с ~10k сайтов вида xxxxx.com одна строка = один сайт)
Задача - проверить эту базу,и вытащить из неё все сайты сделанные на цмс Data Life Engine.
Может знает кто варианты ? Кроме "перебрать всё руками" Ж))

zyxel05
Гуру
Зарегистрирован: 22.11.2006
Сообщений: 1454
Обратиться по нику
# Добавлено:Пт Dec 26, 2008 9:11 amОтветить с цитатой
Легче купить отдельную базу DLE-сайтов или напарсить самому.
Блог снова новичка Smile

RedSquare
Свой
Зарегистрирован: 06.12.2008
Сообщений: 77
Обратиться по нику
# Добавлено:Пт Dec 26, 2008 11:01 amОтветить с цитатой
В томто и дело что купил (повёлся на "собрано руками,всё проверено" ,а там оказалось нереальное количество мусора,начиная от вобще левых сайтов,заканчивая 404 Not found Smile)

Решил сделать так - взял её + ещо набрал много баз разных (из открытых источников),с помощью YCCY проверил на индексированность яндексом. Сейчас из того что осталось хочу вытащить всё что DLE

Cabal
Гуру
Зарегистрирован: 20.10.2007
Сообщений: 1360
Обратиться по нику
# Добавлено:Пт Dec 26, 2008 12:32 pmОтветить с цитатой
Код:

<?php
set_time_limit(0);
$priznak='{сюда признак движка}';
$fileUrls='{cюда название файла содержащего урлы по одному на строку}';
$urls=file($fileUrls);
 foreach($urls as $url){
 $referer='http://www.upyachka.ru';
 $curl = curl_init();
 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
 curl_setopt($curl, CURLOPT_TIMEOUT, 30);
 curl_setopt($curl, CURLOPT_HEADER, 0);
 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
 curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
 curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
 curl_setopt($curl, CURLOPT_REFERER, "$referer");
 curl_setopt($curl, CURLOPT_URL, "$url");
 $xxx = curl_exec($curl);
   if(strstr($xxx, $priznak)){
   $array[]=$url;
   }else{
   $bad[]=$url;
   }
 curl_close($curl);
 }
file_put_contents('good.txt', implode('', $array));
file_put_contents('bad.txt', implode('', $bad));
print "OK!";
?>


Смортим какие одинаковые строчки в коде содержат сайты построенные на DLE и не содержат другие сайты и добавляем их вместо строчки "{сюда признак движка}". В папку со скриптом кладём файл с урлами сайтов по одному на строку добавляем его название вместо второй подстановки и запускаем скрипт. Естественно PHP должен иметь место быть на компе. Либо запускайте скрипт на хостинге с PHP. Ну и разумеется в good.txt забираем то что нам нужно, а в bad.txt смотрим на всякий мусор.


Последний раз редактировалось: Cabal (Пт Dec 26, 2008 10:17 pm), всего редактировалось 1 раз
Cabal - патентованный зануда.

RedSquare
Свой
Зарегистрирован: 06.12.2008
Сообщений: 77
Обратиться по нику
# Добавлено:Пт Dec 26, 2008 7:07 pmОтветить с цитатой
Cabal спасибо,но при попытке запустить на денвере этот php файл просто выводит свой код и всё (( Может ещо чтото надо было дописать ?

Cabal
Гуру
Зарегистрирован: 20.10.2007
Сообщений: 1360
Обратиться по нику
# Добавлено:Пт Dec 26, 2008 10:19 pmОтветить с цитатой
А-а-а ну я и слажал Laughing Laughing Laughing
Так всё расписал пипец что делать а обычные "<?" "?>" забыл в начале и в конце добавить когда скрипт копировал и втавлял.

Поправил.
Cabal - патентованный зануда.

RedSquare
Свой
Зарегистрирован: 06.12.2008
Сообщений: 77
Обратиться по нику
# Добавлено:Пт Dec 26, 2008 10:38 pmОтветить с цитатой
Код:
<?php
set_time_limit(0);
$priznak='{<div id=’dle-content’>}';
$fileUrls='{base.txt}';
$urls=file($fileUrls);
 foreach($urls as $url){
 $referer='http://www.upyachka.ru';
 $curl = curl_init();
 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
 curl_setopt($curl, CURLOPT_TIMEOUT, 30);
 curl_setopt($curl, CURLOPT_HEADER, 0);
 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
 curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
 curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
 curl_setopt($curl, CURLOPT_REFERER, "$referer");
 curl_setopt($curl, CURLOPT_URL, "$url");
 $xxx = curl_exec($curl);
   if(strstr($xxx, $priznak)){
   $array[]=$url;
   }else{
   $bad[]=$url;
   }
 curl_close($curl);
 }
file_put_contents('good.txt', implode('', $array));
file_put_contents('bad.txt', implode('', $bad));
print "OK!";
?>




Warning: file({base.txt}) [function.file]: failed to open stream: No such file or directory in Z:\home\localhost\www\1.php on line 5

Warning: Invalid argument supplied for foreach() in Z:\home\localhost\www\1.php on line 6

Warning: implode() [function.implode]: Bad arguments. in Z:\home\localhost\www\1.php on line 25

Warning: implode() [function.implode]: Bad arguments. in Z:\home\localhost\www\1.php on line 26
OK!


хотя base.txt (нефилтрованная база) лежит в тойже папке...

Cabal
Гуру
Зарегистрирован: 20.10.2007
Сообщений: 1360
Обратиться по нику
# Добавлено:Пт Dec 26, 2008 10:51 pmОтветить с цитатой
вот эти скобочки {} - это символ подстановки. Они для тебя, а не для скрипта. Вот так сделай чтоб было 'base.txt'(одинарные или двойные кавычки нужны).

И это. Односторонних апострофов которые ты поставил во второй подстановке в HTML нету. Надо писать прямо как в коде написано. Если кавычки одинарные то просто используй их внутри двойных вот так "<div id='dle-content'>".
Cabal - патентованный зануда.

Cabal
Гуру
Зарегистрирован: 20.10.2007
Сообщений: 1360
Обратиться по нику
# Добавлено:Пт Dec 26, 2008 11:06 pmОтветить с цитатой
Код:
<?php
set_time_limit(0);
$priznak="<div id='dle-content'>";
$fileUrls="base.txt";
$urls=file($fileUrls);
 foreach($urls as $url){
 $referer='http://www.upyachka.ru/';
 $curl = curl_init();
 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
 curl_setopt($curl, CURLOPT_TIMEOUT, 30);
 curl_setopt($curl, CURLOPT_HEADER, 0);
 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
 curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
 curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
 curl_setopt($curl, CURLOPT_REFERER, $referer);
 curl_setopt($curl, CURLOPT_URL, $url);
 $xxx = curl_exec($curl);
   if(strstr($xxx, $priznak)){
   $array[]=$url;
   }else{
   $bad[]=$url;
   }
 curl_close($curl);
 }
file_put_contents('good.txt', implode('', $array));
file_put_contents('bad.txt', implode('', $bad));
print "OK!";
?>



Короче вот я тебе поправил.
Cabal - патентованный зануда.

RedSquare
Свой
Зарегистрирован: 06.12.2008
Сообщений: 77
Обратиться по нику
# Добавлено:Сб Dec 27, 2008 9:28 amОтветить с цитатой
Fatal error: Call to undefined function curl_init() in Z:\home\localhost\www\1.php on line 8

Неужели на денвере нет curl ? Или это не из-за этого ?

Cabal
Гуру
Зарегистрирован: 20.10.2007
Сообщений: 1360
Обратиться по нику
# Добавлено:Сб Dec 27, 2008 11:10 amОтветить с цитатой
Я вчера когда исправлял скрипт проверил на его на урле сайта dle-news. Он работает 100% причём именно тот который здесь(я его уже отсюда копипастил).
По поводу Денвера ничего сказать не могу я его использовал неделю в жизни и очень давно.
Cabal - патентованный зануда.
Новая тема Написать ответ    ГЛАВНАЯ ~ ТЕХНИЧЕСКИЕ ВОПРОСЫ

Перейти:  





Генеральный спонсор



Партнеры