Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]PHP Simple HTML DOM Parser - paginacja
Forum PHP.pl > Forum > Przedszkole
hejkumkejkum
Zaczałem bawić się parserem PHP Simple HTML DOM Parser, po prostu chciałem się nauczyć jego obsługi i logiki. Niestety o ile z większością rzeczy problemu nie mam tak utknąłem jesli chodzi o parsowanie strony, która ma paginację.
Jako przykład można wziąć panorame firm, albo Allegro, gdzie wyniki są podzielone na podstrony.

Na przykład coś takiego:

  1. <ul class="pagination">
  2.  
  3. <li class="active">1</li>
  4. <li><a href="/Shop.php/Listing?category=76741&p=2">2</a></li>
  5. <li><a href="/Shop.php/Listing?category=76741&p=3">3</a></li>
  6. <li><a href="/Shop.php/Listing?category=76741&p=4">4</a></li>
  7. <li><a href="/Shop.php/Listing?category=76741&p=5">5</a></li>
  8. <li><a href="/Shop.php/Listing?category=76741&p=6">6</a></li>
  9.  
  10. <li class="suffix">z</li>
  11. <li><a href="/Shop.php/Listing?category=76741&p=13">13</a></li>
  12.  
  13. <li class="next"><a href="/Shop.php/Listing?category=76741&p=2">Następna</a></li>
  14. </ul>


To akurat wziąłem z Allegro.
W jaki sposób uzyskać wyniki z każdej podstrony? Na przykład tytuł. Czyli w tym wypadku 13 podstron?
Prosze o jakąś podpowiedź, mały przykład, nie wiem jak to ugryźć i utknąłem, a zaczyna mnie to frustrować.

Potrafię pobrać wyniki z głównej, potrafię pobrać wyniki z określonego linka, ale nie potrafię przelecieć wyników poprzez paginację.
Będę wdzięczny za nakierowanie.

  1. foreach($html->find('.pagination li a', 0) as $pagination){
  2. }
trueblue
Każdy href traktujesz jako nowe źródło dla parsera, czyli w pętli inicjujesz nowe instancje parsera podając mu href:
  1. foreach($html->find('.pagination li a') as $pagination){
  2. $html2=file_get_html($pagination->href);
  3. }

hejkumkejkum
Tylko tutaj mam trochę bardziej złożony problem gdyż lista nie zawiera kompletu linków do podstron, brakuje strony 1 (p=1), mamy linki od p=2 do p=6, brakuje linków od p=7 do p=12, i jest link p=13.

Tak więc tutaj jest problem by dobrać się do każdej podstrony z paginacji. Wydaje mi się, że może trzeba zastosować pętlę for ?
YourFrog
Albo skubiesz coś dla konkretnej witryny albo robisz pająka jedno z dwóch ;p

Jak robisz pająka to on i tak tam dojdzie nie bój się, a jak robisz dla konkretnej strony to co soi na przeszkodzie znajać pax_max zrobić for to down ?
hejkumkejkum
Nie, to serio w ramach edukacji. Miałem jakiś stary parser z przed chyba roku i chciałem zrobić po swojemu by nauczyć się robić taki parser.
Dlatego wziałem sobie dwie najpopularniejsze witryny jako przykład, bo mają one taką formę podstron (paginacja) z którymi nie mogłem sobie dac rady.
Pewnie po części wynika to z wpływu gorąca na koncentrację smile.gif

Reszta określeń jest mi obca smile.gif Czym jest pax max? Maksymalną ilością podstron?
Greg0
Jeśli znasz maksymalną ilość podstron, to jesteś w stanie odwiedzić każdą z nich używają pętli for. Dla każdej podstrony w adresie url przekazywany jest numer.
Więc iterujesz od 1 do max_ilość_podstron dla konkretnego adresu URL który zawiera parametr z numerem strony. Żeby nie było napisałem dokładnie to samo co YourFrog więc jemu należy się podziękowanie.
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.