Апр 21

Как получить полный список сайтов из DMOZ ?

Рубрики: Новости Метки: ,  Количество просмотров: 1 602

Никогда не задавались подобным вопросом? Я получал полный список сайтов из каталога DMOZ не один раз, и т.к. мне сегодня он снова понадобился, я решил создать пост на эту тему.

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

dmoz_dump

А дальнейшая инструкция такая: берем вот этот скрипт

<?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 тоже не просите выложить, он не мало весит, мне хостер счет хороший выложит ;)


Видео наблюдение, охранные системы в Украине.
Всегда приятно смотреть на красивый букет. Подставки для цветов сделают букет еще красивее.

Другие статьи автора

Комментарии

  1. Цитировать Olegan

    Хорошее решение! А под ЯК такой можно сделать? Что бы иметь базу сайтов из ЯК. Спасибо.

  2. Цитировать Olegan

    Уважаемый Евгений, попробовал Ваш скрипт, всё хорошо работает, как и описано выше. Исходя из этого есть два вопроса, доработки. Можно ли сделать так, что бы фильтровались имена доменов, при парсеровке удалялись дубликаты. Например там есть такие сайты:
    site.com/music/
    site.com/pics/
    Где site.com это одинаковые сайты, просто с двумя разными директориями.
    И Второе, можно сделать так, что бы выделить ТОЛЬКО домены в зоне РУ? Если это возможно, то скажите что добавить и изменить. Спасибо.

  3. Цитировать Samborsky

    А под ЯК такой можно сделать? Что бы иметь базу сайтов из ЯК

    Они не выкладывают дамп базы, потому единственный доступный способ получить их базу – парсить. Но мне это пока не нужно, потому парсер напишу только тому, кто готов заплатить за разработку.

    По второму вопросу – такие выборки можно делать, но к сожалению у меня нет времени этим заниматься. Думаю любой начинающий программист сделает из списка сайтов любые выборки на ваше усмотрение, это не дорого выйдет.

  4. Цитировать Jack

    Провел аналогичную операцию (своими скриптами)
    В исходном файле у меня получилось всего 2,8 млн ссылок. Причем моего сайта там не оказалось. Да и русских сайтов почему-то маловато… Никак не пойму где искать свой сайт (guitartime.ru)

  5. Цитировать a-data

    скажите,а чем распаковать этот архив?

  6. Цитировать Sergey

    Здравствуйте. Сделал все как написано, а файл sites.txt после завершения пустой. :(

  7. Цитировать Samborsky

    Значит DMOZ что-то поменял. надо переписывать парсер

  8. Цитировать Sergey

    Евгений, сделай пожалуйста обновление!

  9. Цитировать Sergey

    Ничего путевого в интернете не нашел. Аналогов нет. Можно где-то скачать уже сконверченую базу mysql, не очень свежую, которая долго устанавливается, и потом с нее выкачивать url`ы.

Добавить комментарий