2013-04-05 23 views
6

Próbuję znaleźć wyczerpującą listę wszystkich zdjęć na wikipedii, którą mogę następnie odfiltrować do domeny publicznej. Pobrałem SQL wysypisk stąd:Znajdowanie i pobieranie obrazów w usypie Wikipedia

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

studiował schematu DB:

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

Myślę, że rozumiem go, ale gdy wybiorę przykładowy obraz ze strony wikipedia Nie mogę go znaleźć nigdzie na wysypiskach. Na przykład:

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

Zrobiłem grep na wysypisko „Obraz”, „imagelinks” oraz „stronę” szuka „Carrizo_2a.JPG” i nie znalazł.

Czy te zrzuty nie są kompletne? Czy nie rozumiem struktury? Czy jest lepszy sposób to zrobić?

Ponadto, aby przejść o jeden krok naprzód: po odfiltrowaniu mojej listy i pobraniu zbiorczego zestawu obrazów (tysięcy) widziałem kilka wzmianek, które muszę zrobić z lustra strony, aby zapobiec przeciążanie wikipedia/wikimedia. Jeśli masz jakieś wskazówki na ten temat, byłoby to pomocne.

+0

Oto przykład drugiego obrazu, który wykazuje te same objawy. Próbowałem kilku i nie znalazłem ani jednego, który jest na wysypisku. http://pl.wikipedia.org/wiki/File:Aerial-SanAndreas-CarrizoPlain.jpg –

Odpowiedz

10

MediaWiki przechowuje pliki danych w dwóch lub trzech miejscach, w zależności jak liczyć:

  • Rzeczywista metadanych dla aktualnych wersji plików jest przechowywana w tabeli image. Jest to prawdopodobnie to, czego przede wszystkim chcesz; znajdziesz najnowszy zrzut en.wikipedia tego here.

  • danych dla starych wersjami zastąpionej plik zostanie przeniesiony do stołu oldimage, który ma w zasadzie taką samą strukturę jak stół image. Ta tabela jest również składowana, ostatnia to here.

  • Wreszcie każdy plik również (zwykle) odpowiada zwykłej stronie wiki w przestrzeni nazw 6 (File:). Teksty te znajdziesz w zrzutach XML, tak samo jak w przypadku innych stron.

Och, a powód nie jesteś znalezienia tych plików umieszczony w angielskiej Wikipedii wysypisk jest to, że są one ze wspólnego repozytorium w Wikimedia Commons. Znajdziesz je w numerze Commons data dumps.

chodzi o pobieranie rzeczywistych plików here's the (apparently) official documentation. O ile mogę powiedzieć, wszyscy mają na myśli „masowe pobieranie jest aktualnie (stan na wrzesień 2012) dostępny z lustrami ale nie oferowane bezpośrednio z serwerów Wikimedia.” jest to, że jeśli chcesz wszystkie obrazy w archiwum, musisz użyć lustra. Jeśli pobierasz tylko niewielki podzbiór milionów obrazów na Wikipedii i/lub Commons, powinieneś używać serwerów Wikimedia bezpośrednio.

Pamiętaj tylko, aby wykonywać podstawową kurtuazję: wyślij user-agent string, identyfikując siebie i nie uderzaj zbyt mocno w serwery. W szczególności zalecam sekwencyjne uruchamianie pobierania, aby rozpocząć pobieranie następnego pliku dopiero po ukończeniu poprzedniego.Jest to nie tylko łatwiejsze do wdrożenia niż pobieranie równoległe, ale zapewnia, że ​​nie zużywasz więcej niż udział w przepustowości, a prędkość pobierania w mniejszym lub większym stopniu dostosowuje się automatycznie do obciążenia serwera.

Ps. Czy pobrać pliki z serwera lustrzanego lub bezpośrednio z serwerów Wikimedia, twój będzie trzeba dowiedzieć się, które są w katalogu Typowe adresy plików Wikipedia wyglądać następująco:.

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

gdzie „wikipedia/en” część identyfikuje projekt i język Wikimedia (z przyczyn historycznych, Commons jest wymienione jako "wikipedia/commons") i the "a/ab" part jest podane przez pierwsze dwie cyfry heksadecymatu skrótu MD5 nazwy pliku w UTF-8 (ponieważ są one zakodowane w zrzutach bazy danych).

+0

Dziękuję bardzo! Nie dotarłem jeszcze do części pobierania zbiorczego, ale nie zdawałem sobie sprawy, że istnieją dwa oddzielne repozytoria danych. Importuję je teraz, ale szybki "grep" potwierdził, że moje brakujące pliki były w jednym. Wikipedia/media z pewnością nie ułatwiają tego zrozumienia. :) –

+0

Wszystko idzie gładko, ale staram się wymyślić, jak filtrować obrazy, które wybieram, przez to, co jest w domenie publicznej. Nie mogę znaleźć tych informacji w tabeli "image" lub "page". Myślę, że to prawdopodobnie tylko zawartość samej strony. na przykład Zobacz w sekcji "Licencjonowanie" tej strony: http://en.wikipedia.org/wiki/File:Carrizo_2a.JPG Więc pobieram ten plik: http://dumps.wikimedia.org/enwiki /latest/enwiki-latest-pages-articles.xml.bz2 Mam nadzieję, że znajdę wersję SQL tego dla łatwiejszej manipulacji. Jakieś sugestie? I czy jestem na dobrej drodze? –

+0

Powinienem dodać, na tej stronie jest napisane: "Dostępne są również pliki SQL dla wszystkich stron i linków." To właśnie dało mi wskazówkę, że prawdopodobnie gdzieś istnieją. –