Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Pobranie danych ze strony- skrypt php
playlottoeu
post 10.05.2016, 15:10:04
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 10.05.2016

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


Witam, wiem że ten temat był wielokrotnie poruszany, ale mam problem z pobraniem odpowiedniej treści:
mój kod wygląda tak:
  1. <?php
  2. require('simple_html_dom.php');
  3. $html = file_get_html("https://www.lottoland.pl/euromillions");
  4. echo $html->find(".amount",2)->innertext;
  5. ?>

wynik skryptu:
http://lottoonline.com.pl/index2.php

dane pochodzą z div'a z class="currentJackpot" a w nim span class="amount"
tylko amount występuje wiele razy na stronie i co kilka dni się zmienia kolejność i za każdym razem zwraca mi inną wartość, a ja chce konkretnie kwotę kumulacji gry euromilions
Proszę o podpowiedz jak to zrobić aby pobrane dane były zawsze z tego pola z kwotą kumulacji?

zrobiłem to również za pomocą innej metody:

  1. <?php
  2. $euromillions = file_get_contents('https://www.lottoland.pl/euromillions');
  3. preg_match_all('[<span class="amount">(.+?)<\/span>]', $euromillions, $kwota);
  4. print_r($kwota[0][0]);
  5. ?>


pokazuje oczekiwany przeze mnie wynik, ale co w przypadku jeśli amount zmieni swoja kolejność na stronie?
a trochę tego jest:
  1. Array ( [0] => Array ( [0] => 322 [1] => 2 [2] => 300 [3] => 250 [4] => 44 [5] => 322 [6] => 1,6 [7] => 86 [8] => 3 [9] => 11 [10] => 4,4 [11] => 34,2 [12] => 23,9 [13] => 580 [14] => 35 [15] => 7,2 [16] => 17,7 [17] => 146 [18] => 355,3 [19] => 59 [20] => 579 ) [1] => Array ( [0] => 322 [1] => 2 [2] => 300 [3] => 250 [4] => 44 [5] => 322 [6] => 1,6 [7] => 86 [8] => 3 [9] => 11 [10] => 4,4 [11] => 34,2 [12] => 23,9 [13] => 580 [14] => 35 [15] => 7,2 [16] => 17,7 [17] => 146 [18] => 355,3 [19] => 59 [20] => 579 ) )


i mam jeszcze jedno pytanie, bardzo ważne, jak można wykonać kod zapisany w polu formularza?
  1. <h4 class="font-30"><?php the_field('kwota_do_wygrania')?></h4>

mam pole "kwota do wygrania" i w nim wcześniej wpisywałem aktualne dane, teraz chciałbym wpisać tam kod skryptu loterii, aby WordPress automatycznie aktualizował te dane, ale jest problem ponieważ ten kod się nie wykonuje, występuje błąd.

pewnie związane jest to z funkcja the_field, ale jak to zrobić żeby wyświetlało wynik skryptu? Proszę o pomoc w rozwiązaniu problemu.

Ten post edytował playlottoeu 10.05.2016, 18:52:31
Go to the top of the page
+Quote Post
LowiczakPL
post 10.05.2016, 21:06:28
Post #2





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

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


najpierw pobieraj "currentJackpot" a dopiero "amount" z jacpota

Ten post edytował LowiczakPL 10.05.2016, 21:07:09


--------------------
Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
Go to the top of the page
+Quote Post
playlottoeu
post 10.05.2016, 23:38:00
Post #3





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 10.05.2016

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


Tylko jak to zrobić? Nie znam się wogóle na php z tym kodem walczyłem dość długo, a wyciągnięcie danych span z div to już problem...
Go to the top of the page
+Quote Post
LowiczakPL
post 11.05.2016, 09:20:01
Post #4





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

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


sprawdziłem i okazuje się że
na stronie (w DOM) tych danych nie ma są dodane za pomocą JS


--------------------
Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
Go to the top of the page
+Quote Post
playlottoeu
post 11.05.2016, 09:42:18
Post #5





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 10.05.2016

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


da się to zrobić w jakiś inny sposób? albo z innej podstrony np:

  1. <?php
  2. $euromillions = file_get_contents('https://www.lottoland.pl/loterie');
  3. preg_match_all('[<span class="amount">(.*?)<\/span>]', $euromillions, $kwota);
  4. print_r($kwota);
  5. ?>


tu jest trochę łatwiej, ale nie wiem jak wyłapać kwotę z div lotteryName a następnie amount?

Jeśli ktoś czuje się w tym dobry to może coś takiego dla mnie napisać za odpowiednia opłatą, proszę o wiadomości na pm.
Go to the top of the page
+Quote Post
Pyton_000
post 11.05.2016, 11:20:55
Post #6





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


  1. $tekst = file_get_content('https://www.lottoland.pl/euromillions');
  2. preg_match_all('/<h2>EuroMillions<\/h2>.*?"amount">(\d+)/', $text, $match);


Ten post edytował Pyton_000 11.05.2016, 11:21:38
Go to the top of the page
+Quote Post
playlottoeu
post 11.05.2016, 15:38:44
Post #7





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 10.05.2016

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


nie działa mi to w żaden sposob:

1.
  1. <?php
  2. $text = file_get_contents('https://www.lottoland.pl/euromillions');
  3. preg_match_all('/<div class="label">EuroMillions<\/div>.*?<span class="amount">(\d+)<\/span>/', $text, $match);
  4. print_r($match);
  5. ?>

2.
  1. <?php
  2. $text = file_get_contents('https://www.lottoland.pl/loterie');
  3. preg_match_all('/<span class="lotteryName">EuroMillions<\/span>.*?<span class="amount">(\d+)<\/span>/', $text, $match);
  4. print_r($match);
  5. ?>


Ten post edytował playlottoeu 11.05.2016, 15:42:49
Go to the top of the page
+Quote Post
LowiczakPL
post 11.05.2016, 16:12:22
Post #8





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

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


na tej stronie https://www.lottoland.pl/loterie wynik jest w DOMie więc tu bez problemu tą pierwszą klasą do DOMa dasz radę



--------------------
Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
Go to the top of the page
+Quote Post
playlottoeu
post 11.05.2016, 16:44:56
Post #9





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 10.05.2016

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


Sam tego nie wykombinuje, dzięki za chęci.
Go to the top of the page
+Quote Post
LowiczakPL
post 12.05.2016, 18:31:23
Post #10





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

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


To rozwiązanie, liczę że więcej nie trzeba rozpisywać i dasz sobie radę to obrobić

  1. require('simple_html_dom.php');
  2. $html = file_get_html("https://www.lottoland.pl/loterie");
  3.  
  4.  
  5. $get = $html->find('.lotteryTeaserBoxColumn');
  6.  
  7. foreach($get as $a) {
  8. $ret1 = str_get_html($a->innertext);
  9. $ret2 = $ret1->find('.lotteryName',0);
  10. $ret3 = $ret1->find('.amount',0);
  11. $title = $ret2->innertext;
  12. $kumulacja = $ret3->innertext;
  13. echo '<br>tytuł:'. $title. ', kumulacja: '.$kumulacja;
  14.  
  15. }


Ten post edytował LowiczakPL 12.05.2016, 19:06:18


--------------------
Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
Go to the top of the page
+Quote Post
playlottoeu
post 12.05.2016, 19:16:10
Post #11





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 10.05.2016

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


  1. <?php
  2. require('simple_html_dom.php');
  3. $html = file_get_html("https://www.lottoland.pl/loterie");
  4. echo $html->find(".superEnalotto .amount",0)->innertext;
  5. ?>

wynik:
http://lottoonline.com.pl/superenalotto.php

działa już jak należy po prostu źle pobierana była klasa, głównym znacznikiem jest <a class=""></a> a następnie w nim amount
Proszę o pomoc w przełożeniu tego na ten kod bez wykorzystania pliku dom, aby nie martwic się czy plik jest na serwerze czy go nie ma.

  1. <?php
  2. $elGordo = file_get_contents('https://www.lottoland.pl/loterie');
  3. preg_match_all('[<a class="ajaxNavi lotteryTeaserBox elGordoPrimitiva page-link"><\/a> <span class="amount">(.*?)<\/span>]', $elGordo, $kwota);
  4. print_r($kwota);
  5. ?>

wynik:
http://lottoonline.com.pl/elgordo.php

Prosze o podpowiedz jak to naprawić aby działało jak powyższy kod.
Go to the top of the page
+Quote Post
LowiczakPL
post 13.05.2016, 17:59:24
Post #12





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

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


odpaliłeś w ogóle ten kod, który Ci napisałem ?


--------------------
Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
Go to the top of the page
+Quote Post
playlottoeu
post 15.05.2016, 23:59:33
Post #13





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 10.05.2016

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


Jestem już na etapie aktualizacji danych w bazie WordPress, proszę podpowiedzcie mi co jest nie tak, że zwraca mi komunikat o tym rekord nie został dodany?

  1. <?php
  2. require('simple_html_dom.php');
  3. $superenalotto = file_get_html("https://www.lottoland.pl/loterie");
  4. $kwota = $superenalotto->find(".superEnalotto .amount",0);
  5. $kum1 = $kwota->innertext;
  6. if($kum1) {
  7. $connection = @mysql_connect('localhost', 'baza', '*****')
  8. or die('Brak połączenia z serwerem MySQL');
  9. $db = @mysql_select_db('baza', $connection)
  10. or die('Nie mogę połączyć się z bazą danych');
  11. $aktualizacja = @mysql_query("INSERT INTO lt_postmeta SET meta_id='484', post_id='47', meta_key='kwota_do_wygrania', meta_value='$kum1'");
  12. if($aktualizacja) echo "Rekord został dodany poprawnie";
  13. else echo "Błąd nie udało się dodać nowego rekordu";
  14. mysql_close($connection);
  15. }
  16. ?>
  17.  


tak wygląda tabela

Go to the top of the page
+Quote Post
Pyton_000
post 16.05.2016, 07:27:22
Post #14





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


http://php.net/manual/en/function.mysql-error.php
Go to the top of the page
+Quote Post
playlottoeu
post 18.11.2016, 17:22:27
Post #15





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 10.05.2016

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


  1. <?php
  2. require('simple_html_dom.php');
  3. $loterie = file_get_html("https://www.lottoland.pl/loterie");
  4. $superenalotto = $loterie->find(".superEnalotto .amount",0);
  5. $kum1 = $superenalotto->innertext;
  6. $elgordo = $loterie->find(".elGordoPrimitiva .amount",0);
  7. $kum2 = $elgordo->innertext;
  8.  
  9. if($loterie) {
  10. $connection = @mysql_connect('localhost', 'baza', '****')
  11. or die('Brak połączenia z serwerem MySQL');
  12. mysql_select_db('baza', $connection);
  13. echo mysql_errno($connection) . ": " . mysql_error($connection) . "\n";
  14. mysql_query("SET CHARSET utf8");
  15. mysql_query("SET NAMES `utf8` COLLATE `utf8_polish_ci`");
  16. mysql_query("UPDATE lt_postmeta SET meta_value='$kum1 mln zł' WHERE meta_id='484'", $connection);
  17. mysql_query("UPDATE lt_postmeta SET meta_value='$kum2 mln zł' WHERE meta_id='466'", $connection);
  18. echo mysql_errno($connection) . ": " . mysql_error($connection) . "\n";
  19. mysql_close($connection);
  20. }


Wszystko już działa jak trzeba, pozdrawiam smile.gif

Witam, proszę o pomoc, bo napotkałem teraz problem związany z rożnymi kwotami kumulacji, np jest w Irish lotto 39,9 mln, a polskim lotto 6 mln, chciałbym teraz zmienić sposób prezentacji kwot, tzn. rozwinąć je o "zera" czyli 39 900 000 i 6 000 000 jak to zrobić żeby po odczytaniu danych przez "dom" skrypt automatycznie dodawał 5 albo 6 zer i usuwał przecinek? Ewentualnie zrobić tak, aby pobrane zostały tylko 2 lub 3 cyfry (są kumulacje po kilkaset milionów) przed przecinkiem wtedy z reszta nie powinno być problemu.

Ten post edytował playlottoeu 16.05.2016, 12:01:37
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: 19.04.2024 - 15:24