Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyciąganie danych z obcej strony
Forum PHP.pl > Forum > PHP
soliniak
Witam,

Próbuję wyciągnąć ze strony lotka liczby z poprzednich losowań.
Używam do tego simple_html_dom.php, gdy wpisuję z palca datę która mnie interesuje to wszystko działa jak powinno ale gdy chcę to zautomatyzować to w ogóle nie działa...
Oto mój kod:

  1.  
  2. <?php
  3.  
  4. ini_set( 'display_errors', 'On' );
  5. error_reporting( E_ALL );
  6.  
  7. require ('simple_html_dom.php');
  8.  
  9. # FORMAT DATY ROK-MIESIAC-DZIEN
  10.  
  11.  
  12. # szukaj od roku X do roku Y
  13. $x = "2000";
  14. $y = "2001";
  15.  
  16. for ($d=1; $d<32; $d++){
  17. $di = "-".$d;
  18.  
  19. for ($m=1; $m<13; $m++){
  20. $mi = "-".$m;
  21.  
  22. for ($r=$x; $r<$y+1; $r++){
  23. $ri = $r;
  24.  
  25. #echo $ri, $mi, $di;
  26. $html = file_get_html("http://www.lotto.pl/lotto/wyniki-i-wygrane?data_losowania%5Bdate%5D=".$ri, $mi, $di."&op=");
  27.  
  28. foreach($html->find('div.5612-rosnaco') as $element){
  29.  
  30. $item['1'] = $element->find('div.liczba1', 0)->plaintext;
  31. $item['2'] = $element->find('div.liczba2', 0)->plaintext;
  32. $item['3'] = $element->find('div.liczba3', 0)->plaintext;
  33. $item['4'] = $element->find('div.liczba4', 0)->plaintext;
  34. $item['5'] = $element->find('div.liczba5', 0)->plaintext;
  35. $item['6'] = $element->find('div.liczba6', 0)->plaintext;
  36.  
  37. echo $item['1'];
  38. echo "-" .$item['2'];
  39. echo "-" .$item['3'];
  40. echo "-" .$item['4'];
  41. echo "-" .$item['5'];
  42. echo "-" .$item['6']."<br />";
  43. }
  44.  
  45.  
  46. }
  47. }
  48. }
  49.  
  50.  
  51. ?>
  52.  


Przyznam, że wszystko się sypie od momentu dodania pętli... Pewnie coś bezmyślnie zrobiłem i nie jestem w stanie sobie teraz uświadomić co...

Oto błąd który otrzymuję:

Kod
Warning: file_get_contents() expects parameter 3 to be resource, string given in \lotto\simple_html_dom.php on line 76
Fatal error: Call to a member function find() on a non-object in \lotto\index.php on line 34


Da się coś z tym zrobić żeby działało?
Z góry dziękuję za pomoc smile.gif
nospor
.$ri, $mi, $di."&op=");
Jestes pewien ze tam mialy byc przecinki, czyli kolejne parametry funkcji, a nie kropki, czyli łączenie tego tekstu w calosc?
soliniak
Cytat(nospor @ 9.04.2015, 14:30:16 ) *
.$ri, $mi, $di."&op=");
Jestes pewien ze tam mialy byc przecinki, czyli kolejne parametry funkcji, a nie kropki, czyli łączenie tego tekstu w calosc?

Pomogło smile.gif (raczej prędko bym tego nie wyłapał tongue.gif )
Teraz niestety zwraca mi cały czas te same 6 cyfr... Jakieś sugestie?
nospor
$item['1'] =
Tutaj nadpisujesz zawsze $item[1] wiec w wyniku masz zawsze ostatnie nadpisanie... dosc logiczne.
soliniak
Cytat(nospor @ 9.04.2015, 14:50:07 ) *
$item['1'] =
Tutaj nadpisujesz zawsze $item[1] wiec w wyniku masz zawsze ostatnie nadpisanie... dosc logiczne.


To nie to, już rozwiązałem problem.
Cały czas miałem tą samą klasę div'a jako numer losowania.

Dzięki za pomoc.
smile.gif

EDIT:

Chciałbym jeszcze dodać do tego żeby w pętli $d cyfra była co trzecia tzn. 1 potem 4 potem 7 itd... Jak można to zrobić w PHP?
markuz
Zamiast $d++ wstaw $d += 3
soliniak
Przed chwilą wygooglałem, ale dziękuję smile.gif

EDIT:
Otrzymuję taki oto komunikat:

Kod
Fatal error: Maximum execution time of 30 seconds exceeded in \lotto\simple_html_dom.php on line 76


Jak można przedłużyć ten czas 30 sekund? Albo w ogóle ominąć tą "blokadę"?

EDIT2:
Już wiem smile.gif
  1. ini_set('max_execution_time', 300); //300 sec = 5 minut
aras785
Jednak pomyliłem odpowiedzi biggrin.gif
soliniak
Całe to wyciąganie danych z obcej stronie jest możliwe w tej chwili tylko dlatego, że strona totka przesyła formularze za pomocą metody GET, a co zrobić jeśli wszystko jest metodą POST przesyłane?
Jak zasymulować uzupełnienie i wysłanie formularza?
markuz
Poczytaj o cURL smile.gif
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.