2013-04-05 3 views
6

Я пытаюсь найти исчерпывающий список всех изображений в википедии, которые затем я могу отфильтровать до общедоступных. Я скачал SQL дамп отсюда:Поиск и загрузка изображений в Википедии Дамп

http://dumps.wikimedia.org/enwiki/latest/

И изучили схему БД:

http://upload.wikimedia.org/wikipedia/commons/thumb/4/42/MediaWiki_1.20_%2844edaa2%29_database_schema.svg/2193px-MediaWiki_1.20_%2844edaa2%29_database_schema.svg.png

Я думаю, я понимаю, но когда я беру пример изображения со страницы википедии Я не могу найти его нигде на свалках. Например:

http://en.wikipedia.org/wiki/File:Carrizo_2a.JPG

Я сделал Grep на свалках «образ», «imagelinks» и «страница» ищет «Carrizo_2a.JPG», и это не нашел.

Эти свалки не завершены? Я не понимаю структуру? Есть лучший способ сделать это?

Кроме того, чтобы перейти на один шаг: после того, как я отфильтровал свой список, и я хочу загрузить большой набор изображений (тысячи), я увидел несколько упоминаний о том, что мне нужно сделать это с зеркала сайта, чтобы предотвратить перегрузка wikipedia/wikimedia. Если у вас есть какие-либо рекомендации по этому вопросу, это будет полезно.

+0

Вот пример второго изображения, которое проявляет те же симптомы. Я пробовал кучу и еще не нашел ни одного, находящегося на свалках. http://en.wikipedia.org/wiki/File:Aerial-SanAndreas-CarrizoPlain.jpg –

ответ

10

МедиаВики хранит файл данных в двух или трех местах, в зависимости от того, как вы считаете:

  • Фактические метаданные для текущих версий файлов хранится в таблице image. Вероятно, это то, чего вы в первую очередь хотите; вы найдете последнюю справку en.wikipedia из этого here.

  • Данные для старых замененных изменений файла перемещаются в таблицу oldimage, которая имеет в основном ту же структуру, что и таблица image. Эта таблица также сбрасывается, последняя - here.

  • Наконец, каждый файл также (обычно) соответствует довольно обычной обычной вики-странице в пространстве имен 6 (File:). Вы найдете их в XML-дампах, как и для любых других страниц.

О, и причина, вы не найти те файлы, которые вы связаны с в английской Википедии свалок, что они из общего хранилища на Викискладе. Вместо них вы найдете их в Commons data dumps.

Что касается загрузки фактических файлов, here's the (apparently) official documentation. Насколько я могу судить, все они подразумевают под «Bulk загрузки в настоящее время (по состоянию на сентябрь 2012 года) доступен от зеркала, но не предлагается непосредственно с серверов Викимедиа.» является то, что если вы хотите все изображения в tarball, вам придется использовать зеркало. Если вы только вытаскиваете относительно небольшое количество миллионов изображений на Википедии и/или в Commons, должно быть хорошо использовать серверы Викимедиа напрямую.

Не забудьте проявить основную любезность: отправьте user-agent string, идентифицируя себя и не попадайте слишком сильно на серверы. В частности, я бы рекомендовал загружать загрузки последовательно, чтобы вы только загрузили следующий файл после того, как закончили предыдущий.Мало того, что это проще реализовать, чем параллельная загрузка в любом случае, но это гарантирует, что вы не будете болеть больше, чем ваша доля полосы пропускания, и позволяет скорости загрузки более или менее автоматически адаптироваться к нагрузке на сервер.

Ps. Если вы скачиваете файлы с зеркалом или непосредственно с серверов Wikimedia, ваш будет необходимо выяснить, в каком каталоге они в Типичными URL-файл Википедии выглядеть следующим образом:.

http://upload.wikimedia.org/wikipedia/en/a/ab/File_name.jpg 

где «wikipedia/en» часть идентифицирует проект и язык Викимедиа (по историческим причинам Commons указан как «wikipedia/commons»), а the "a/ab" part задается первыми двумя шестнадцатеричными цифрами хэша MD5 имени файла в UTF-8 (поскольку они закодированы в дампах базы данных).

+0

Большое спасибо! Я еще не добрался до части массовой загрузки, но я не понял, что есть два отдельных хранилища данных. Я импортирую их обоих прямо сейчас, но быстрый «grep» подтвердил, что мои отсутствующие файлы были в общей собственности. Википедия/СМИ уверены, что это нелегко понять. :) –

+0

Все идет гладко, за исключением того, что я пытаюсь выяснить, как фильтровать изображения, которые я выбираю тем, что находится в общественном достоянии. Я не могу найти эту информацию в таблице «image» или «странице». Я думаю, что это, вероятно, только в содержании самой страницы. например См. Раздел «Лицензирование» на этой странице: http://en.wikipedia.org/wiki/File:Carrizo_2a.JPG Так что я загружаю этот файл: http://dumps.wikimedia.org/enwiki /latest/enwiki-latest-pages-articles.xml.bz2 Но я надеюсь найти SQL-версию этого для упрощения манипуляций. Какие-либо предложения? И я на правильном пути здесь? –

+0

Я должен добавить, что на этой странице говорится: «Файлы SQL для всех страниц и ссылок также доступны». Вот что дало мне понять, что они, вероятно, существуют где-то. –

Смежные вопросы