Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyniki lotto na stronie
Forum PHP.pl > Forum > Gotowe rozwiązania
wilq
Czy ktos moze mi pomóc, jak pobrać ze strony lotto wyniki losowan na własna strone. NIe wiem czy tu mozna bedzie uzyc funkcji fsockopen()

---------
php >> Skrypty
Seth
scanner
IMHO najpierw musisz mieć zgode lotto.pl.
wilq
A jezeli oni wysyłają mi wynik na maila. Moze z maila da sie automatycznie wyciągnąc tekst który mi wysyłają. To juz chyba nie jest zabronione.
nobody
Cytat
IMHO najpierw musisz mieć zgode lotto.pl.

A moim zdaniem nie. To nie pogoda albo cos, ze jest specjalna ekipa, ktorej placa za badania a ktos kradnie i nawet nie napisze skad ma prognoze...Te wyniki sa codziennie ogolnie dostepne i nikt mu raczej nie udowodni czy zgarnal je ze stronki lotto czy spisal z TV i wklepal na stronke...
GrayHat
ja mam taki skrypt. odezwij sie na gg: 1313702 lub mailem grayhat@op.pl
scanner
Dodatkowe materiały: http://forum.php.pl/viewtopic.php?t=4316&s...highlight=lotto
panbobek44
Napisałem dla treningu skrypt do pobierania danych ze strony Lotto, ale mam z nim problem. Skrypt jest napisany prymitywnie przez co funkcja fopen otwiera stronę prawie 20000 przez co jest bezużyteczna. Jak to poprawić?

Jeśli skrypt wykonywałby się do końca to już bez problemu wyniki można by zapisywać do bazy.

  1. <?
  2. for($rok = 1957; $rok <= 2011; $rok++) {
  3. for($miesiac = 1; $miesiac <= 12; $miesiac++) {
  4. for($dzien = 1; $dzien <= 31; $dzien++) {
  5. if($dzien < 10) $dzien_0 = '0' . $dzien;
  6. else $dzien_0 = $dzien;
  7. if($miesiac < 10) $miesiac_0 = '0' . $miesiac;
  8. else $miesiac_0 = $miesiac;
  9. $data = $dzien_0 . '-' . $miesiac_0 . '-' . $rok;
  10.  
  11. $plik_nazwa = 'http://serwis.lotto.pl/183-4acdb422ae884.htm?id_gra=1&sortuj=on&numer=0&data=' . $data;
  12. $plik_uchwyt = fopen($plik_nazwa, 'rb');
  13. if($plik_uchwyt == false) {
  14. echo "error";
  15. }
  16. else {
  17. $plik_tresc = stream_get_contents($plik_uchwyt);
  18. if(strpos($plik_tresc, 'iepoprawny format daty') < 1) {
  19. $plik_tresc = substr($plik_tresc, strpos($plik_tresc, 'cym</a>)</th>') + 18);
  20. $plik_tresc = explode('<tr><th colspan="3">', $plik_tresc);
  21. $plik_tresc = $plik_tresc[0];
  22. $plik_tresc = str_replace('<tr><td>', 'x', $plik_tresc);
  23. $plik_tresc = str_replace('</td><td>', '|', $plik_tresc);
  24. $plik_tresc = str_replace('</td><td class="bold">', '|', $plik_tresc);
  25. $plik_tresc = str_replace('</td></tr>', '|', $plik_tresc);
  26. $plik_tresc = str_replace('||', '|', $plik_tresc);
  27. $plik_tresc = str_replace(', ', '|', $plik_tresc);
  28. echo $plik_tresc;
  29. fclose($plik_uchwyt);
  30. }
  31. }
  32. }
  33. }
  34. }
  35. ?>
Piogola
Po co pobierasz wszystkie wyniki lotto ?
panbobek44
Chciałbym je zapisać do MySQL. Akurat nie chodzi mi do końca o lotto tylko chciałbym się dowiedzieć jak to zrobić.
Piogola
Zamiast wyświetlać wyniki to zrób zapytanie do bazy
panbobek44
Ale nawet po usunięciu 29 linii kodu czyli echo $plik_tresc; skrypt się nie wykonuje.

Przeglądarka mieli jakiś czas i wyświetla błąd:
Strona internetowa nie została znaleziona
Nie znaleziono strony internetowej pod adresem http://www....../temp.php
Błąd 6 (net::ERR_FILE_NOT_FOUND): Nie można znaleźć pliku lub katalogu.
Piogola
  1. $data = strtotime('now');
  2. $zaklad = strtotime('1957-01-27');
  3. while($data > $zaklad){
  4. $page = file_get_contents('http://serwis.lotto.pl/183-4acdb422ae884.htm?id_gra=1&sortuj=on&numer=0&data='.date('d-m-Y', $zaklad));
  5. preg_match_all('#<td>([0-9]+)</td><td>([0-9\-]+)</td><td class="bold">([0-9, ]+)</td>#', $page, $match);
  6. if(count($match[0])>0){
  7. $query = array();
  8. for($i=0;$i<count($match[0]);$i++){
  9. $query[] = '("'.$match[2][$i].'","'.$match[3][$i].'")';
  10. }
  11. echo 'INSERT INTO tabela VALUES '.implode(',', $query).'<br><br><br>';
  12. }
  13. $zaklad = strtotime($match[2][count($match[2])-1].' +1 days');
  14. }


Działający i sprawdzony skrypt
panbobek44
Niestety ten skrypt dla mnie nic nie zmienia poza sposobem napisania kodu. Wyniki z jednej podstrony też umiem pobrać. Potrzebuję wszystkie wyniki.

Twój skrypt zwrócił tylko:
INSERT INTO tabela VALUES ("1957-01-27","8, 12, 31, 39, 43, 45"),("1957-02-03","5, 10, 11, 22, 25, 27"),("1957-02-10","18, 19, 20, 26, 45, 49"),("1957-02-17","2, 11, 14, 37, 40, 45"),("1957-02-24","8, 10, 15, 35, 39, 49"),("1957-03-03","24, 26, 31, 35, 43, 47"),("1957-03-10","13, 20, 23, 29, 38, 44"),("1957-03-17","8, 13, 15, 22, 38, 47"),("1957-03-24","3, 10, 27, 29, 34, 42"),("1957-03-31","4, 5, 6, 13, 23, 25")
Piogola
Podmień linijkę
  1. $zaklad = strtotime($match[2][count($match[2])-1].' +1 days');
panbobek44
Dziękuję o to mi chodziło. Teraz muszę to przeanalizować i zobaczyć co i jak.
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-2024 Invision Power Services, Inc.