Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Kategorie na Allegro
Forum PHP.pl > Forum > Przedszkole
apollos
Witam! Postanowiłem założyć wątek, bo szczerze mówiąc pomysły mi się wyczerpały. Otóż potrzebuję napisać skrypt, który pobiera kategorie z Allegro, a następnie wyświetla je. Pobierać pobieram przy użyciu file_get_contents, no a następnie pasuje je wyszukać zapewne przy pomocy preg_match. Problem w tym, że za bardzo nie wiem jak to ugryźć. Generalnie kategorie umiejscowione w kodzie HTML są następująco:
  1. <a href="/antyki-i-sztuka" class="alleLink lvl0"><span>Antyki i Sztuka</span></a>

Kolejne podkategorie są identycznie, różni się tylko cyfra w klasie:
  1. <a href="/antyki-bizuteria-62218" class="alleLink lvl2"><span>Biżuteria</span></a>

Tak więc trzeba to wyjąć wyrażeniem regularnym. Czy powinienem brać się tylko za nazwę kategorii czy to co jest w adresie też? I jak najłatwiej byłoby rozróżnić kategorię od podkategorii?
mls
http://allegro.pl/webapi/ - jedyna legalna i niezależna od zmian w układzie stron serwisu droga do uzyskania danych które potrzebujesz...
apollos
Wiem o istnieniu API, ale niestety mam to na "zadanie" i muszę wykonać to samemu.
SmokAnalog
Cytat(mls @ 11.07.2012, 13:13:58 ) *
http://allegro.pl/webapi/ - jedyna legalna i niezależna od zmian w układzie stron serwisu droga do uzyskania danych które potrzebujesz...

A co jest nielegalnego w spisaniu kategorii taką czy inną metodą?

Upewnij się czy na pewno nie możesz skorzystać z API - to też nie jest wcale trywialne smile.gif Jeśli nie możesz, to zamiast wyrażeń regularnych zainteresuj się PHP DOM. Jest to znacznie wygodniejszy sposób na krążenie po kodzie HTML strony niż wyrażenia regularne i nie tak narażony na błędy.
apollos
Niestety, API odpada.
krzywy36
Podaj konkretnie strone z której chcesz to pobierać, bo chyba na każdej podstronie wygląda to inaczej. Z strony głównej same nazwy kategori możesz wyciągnąć tak:
  1. $source = file_get_contents('http://allegro.pl');
  2.  
  3. preg_match_all('|<li><h2><a.*?>(.*)</a></h2></li>|', $source, $matches);
  4.  
  5. print_r($matches[1]);
SmokAnalog
A kolega o DOM nie słyszał? smile.gif
apollos
Cytat(krzywy36 @ 11.07.2012, 14:54:00 ) *
Podaj konkretnie strone z której chcesz to pobierać, bo chyba na każdej podstronie wygląda to inaczej. Z strony głównej same nazwy kategori możesz wyciągnąć tak:
  1. $source = file_get_contents('http://allegro.pl');
  2.  
  3. preg_match_all('|<li><h2><a.*?>(.*)</a></h2></li>|', $source, $matches);
  4.  
  5. print_r($matches[1]);

http://allegro.pl/category_map.php

Cytat(SmokAnalog @ 11.07.2012, 15:03:09 ) *
A kolega o DOM nie słyszał? smile.gif
Coś więcej na ten temat?
Lorum3
Cytat(apollos @ 11.07.2012, 14:18:03 ) *
Niestety, API odpada.


Niestety API odpada, bo nie umiem się nim posługiwać.

Lepiej pisz konkretnie, a nie skrótami, poniżej masz jak byk wszystko opisane.

http://allegro.pl/webapi/documentation.php/theme/id,43
apollos
Cytat(Lorum3 @ 11.07.2012, 15:22:46 ) *
Niestety API odpada, bo nie umiem się nim posługiwać.

Lepiej pisz konkretnie, a nie skrótami, poniżej masz jak byk wszystko opisane.

http://allegro.pl/webapi/documentation.php/theme/id,43

Przecież napisałem, że to nie jest mój wymysł, prawda?
Cytat(apollos @ 11.07.2012, 13:17:17 ) *
Wiem o istnieniu API, ale niestety mam to na "zadanie" i muszę wykonać to samemu.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.