Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]PHP Simple HTML DOM Parser - paginacja
hejkumkejkum
post 10.06.2014, 22:40:48
Post #1





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 11.11.2007

Ostrzeżenie: (0%)
-----


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. }


Ten post edytował hejkumkejkum 10.06.2014, 22:43:22
Go to the top of the page
+Quote Post
trueblue
post 11.06.2014, 06:44:00
Post #2





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1827
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


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. }



--------------------
Go to the top of the page
+Quote Post
hejkumkejkum
post 11.06.2014, 11:27:23
Post #3





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 11.11.2007

Ostrzeżenie: (0%)
-----


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 ?
Go to the top of the page
+Quote Post
YourFrog
post 11.06.2014, 13:08:51
Post #4





Grupa: Zarejestrowani
Postów: 124
Pomógł: 22
Dołączył: 10.01.2014

Ostrzeżenie: (0%)
-----


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 ?
Go to the top of the page
+Quote Post
hejkumkejkum
post 11.06.2014, 13:21:58
Post #5





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 11.11.2007

Ostrzeżenie: (0%)
-----


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?

Ten post edytował hejkumkejkum 11.06.2014, 14:51:12
Go to the top of the page
+Quote Post
Greg0
post 11.06.2014, 14:59:30
Post #6





Grupa: Zarejestrowani
Postów: 264
Pomógł: 54
Dołączył: 31.08.2007
Skąd: Tychy

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 5.07.2025 - 05:02