Automatycznie pobieranie danych z innych stron



Niedawno otrzymaliśmy zlecenie na wykonanie bazy artystów – malarzy, rzeźbiarzy itd. W pierwszej części zlecenia chodziło o skopiowanie ze wskazanej strony internetowej ponad 12 tys rekordów zawierających dane samego artysty, jego najważniejsze prace (ze zdjęciami), notowania aukcyjne itp. Problem polegał na tym, że ręcznie kopiowanie nie miało sensu, a takie dane nie zostały udostępnione w postaci np. RSS. Z pomocą przyszedł CURL i wyrażenia regularne.

Na początek znaleźliśmy w sieci klasę PHP Snoopy, dzięki której można pobrać źródło każdej strony internetowej, które adres został podany (również strony wymagające uwierzytelniania). Zaletą tego rozwiązania było zastosowanie CURL, dzięki czemu przy każdej serii pobieranych rekordów można było „podać się” za innego użytkownika.

W pierwszej fazie pobraliśmy listę wszystkich artystów z linkami do informacji o nich. Lista była podzielona na ponad 100 stron, aczkolwiek udało się bez „zablokowania” serwera, z którego pobieraliśmy dane:))) Za pomocą wyrażeń regularnych z listy wyodrębnione zostały wszystkie linki do informacji o każdej osobie. Ze 100 stron zrobiło się ponad 12 tys podstron.

Następna faza: z każdego linku pobieranie informacji o danym artyście + dodatkowych linków do jego prac i notowań aukcyjnych. Baza znowu się rozrosła (na każdym etapie pobrane i obrobione w locie dane zostały zapisywane do bazy danych).

Całość zlecenia trwała kilka dni – ze względu na duże obciążenie serwera, z którego pobieraliśmy dane. Duże serie automatycznych zapytań potrafią zawiesić niejeden słabszy serwer:)))

Na koniec pobraliśmy również wszystkie zdjęcia prac (razem ok. 50 tys zdjęć) – adresy fotografii zostały pobrane również za pomocą Snoopy. Same natomiast zdjęcia w prosty sposób pobieraliśmy przez file_get_contents().

W razie potrzeby mogę służyć podpowiedzią, w jaki sposób wszystko po kolei można osiągnąć. W praktyce wyszło to tak, że przygotowanie list plików i kodu do pobrania zajęło więcej czasu, niż samo pobieranie.

Ale w tej chwili możemy poszczycić się funkcjonującą, jedną z największych baz artystów w Polsce:))) Na www.dessa.pl – portalu aukcji sztuki, z którym od kilku lat ściśle współpracujemy