Как получить полный список сайтов из DMOZ ?
Никогда не задавались подобным вопросом? Я получал полный список сайтов из каталога DMOZ не один раз, и т.к. мне сегодня он снова понадобился, я решил создать пост на эту тему.
По адресу rdf.dmoz.org всегда лежал дамп базы DMOZ в XML формате. Там все структурировано, и теоретически можно выдрать ссылки только скажем тематики «строительство» или «блоги», но мне нужны все. Для этого понадобится файл content.rdf.u8.gz (около 350 МБ). Скачиваем его, распаковываем и следуем дальнейшей инструкции.

А дальнейшая инструкция такая: берем вот этот скрипт
<?php
// Не прерывать скрипт в течение суток
set_time_limit(3600*24);
// Открываем DMOZ-овский файл на чтение
if( $f = fopen('content.rdf.u8','r') ){
// Создаем файл, куда будем записывать сайты
if( $w = fopen('sites.txt','w') ){
while( !feof($f) ) {
$line = fgets($f,4096);
if( preg_match('/<link\s*r:resource="(.+?)"\s*\/>/',$line,$out) ){
fwrite($w,$out[1] . "\n");
}
}
fclose($w);
}
fclose($f);
}
?>
Кладем content.rdf.u8 в одну папку со скриптом, и вызываем скрипт ч-з браузер. Ч-з 10 минут получите все сайты, которые в данный момент находятся в DMOZ в файле sites.txt. У меня на данный момент в нем более 4,5 млн ссылок.
p.s. не спрашивайте меня как можно использовать эту базу, я не знаю.
p.p.s. файл sites.txt тоже не просите выложить, он не мало весит, мне хостер счет хороший выложит
Видео наблюдение, охранные системы в Украине.
Всегда приятно смотреть на красивый букет. Подставки для цветов сделают букет еще красивее.


Хорошее решение! А под ЯК такой можно сделать? Что бы иметь базу сайтов из ЯК. Спасибо.
Уважаемый Евгений, попробовал Ваш скрипт, всё хорошо работает, как и описано выше. Исходя из этого есть два вопроса, доработки. Можно ли сделать так, что бы фильтровались имена доменов, при парсеровке удалялись дубликаты. Например там есть такие сайты:
site.com/music/
site.com/pics/
Где site.com это одинаковые сайты, просто с двумя разными директориями.
И Второе, можно сделать так, что бы выделить ТОЛЬКО домены в зоне РУ? Если это возможно, то скажите что добавить и изменить. Спасибо.
Они не выкладывают дамп базы, потому единственный доступный способ получить их базу – парсить. Но мне это пока не нужно, потому парсер напишу только тому, кто готов заплатить за разработку.
По второму вопросу – такие выборки можно делать, но к сожалению у меня нет времени этим заниматься. Думаю любой начинающий программист сделает из списка сайтов любые выборки на ваше усмотрение, это не дорого выйдет.
Провел аналогичную операцию (своими скриптами)
В исходном файле у меня получилось всего 2,8 млн ссылок. Причем моего сайта там не оказалось. Да и русских сайтов почему-то маловато… Никак не пойму где искать свой сайт (guitartime.ru)
скажите,а чем распаковать этот архив?
Здравствуйте. Сделал все как написано, а файл sites.txt после завершения пустой.
Значит DMOZ что-то поменял. надо переписывать парсер
Евгений, сделай пожалуйста обновление!
Ничего путевого в интернете не нашел. Аналогов нет. Можно где-то скачать уже сконверченую базу mysql, не очень свежую, которая долго устанавливается, и потом с нее выкачивать url`ы.