Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Notowania giełdowe - dane z innej strony, Pobieranie i wyświetlanie danych z innej strony
superstrona
post 10.12.2009, 13:25:44
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 10.12.2009

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


Witajcie.

Chcę na swojej stronie pobrać i wyświetlić aktualne notowanie jednej ze spółek na giełdzie. Znalazłem stronę, z której pobieram potrzebne mi dane - http://www.czasnazysk.pl/notowania/spolka/pgn Wykorzystuję do tego taki skrypcik:

  1. <?php
  2.  
  3. $curl = curl_init();
  4. curl_setopt($curl, CURLOPT_URL, 'http://www.czasnazysk.pl/notowania/spolka/pgn');
  5. curl_setopt($curl, CURLOPT_REFERER, "http://www.google.pl/");
  6. curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
  7. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  8. curl_setopt($curl, CURLOPT_USERAGENT, 'Googlebot/2.1 (+http://www.googlebot.com/bot.html)');
  9. curl_setopt($curl, CURLOPT_TIMEOUT, 30);
  10. curl_setopt($curl, CURLOPT_HEADER, 0);
  11. $strona = curl_exec($curl);
  12. curl_close($curl);
  13.  
  14. ?>


Wszystko ładnie śmiga, po wywołaniu zmiennej $strona wyświetla mi się zawartość żądanej strony (wiem, że można to zrobić inaczej, ale tu akurat użyłem curl-a). W treści strony fragment z którego chcę wydobyć dane wygląda tak:

  1. Ostatnia wartość: <span style="" id="kurs_PGN">3.78</span><br>
  2. Zmiana procentowa: <span style="" id="procent_PGN" class="red">-0.53%</span>



Wymyśliłem więc zapis preg_matach_all który (według mnie) pobiera wartość i zmianę procentową:

  1. preg_match_all('#<span id="kurs_PGN">([0-9 ]+\.[0-9]+)</span><br>Zmiana procentowa: <span id="procent_PGN" class="red">(-?[0-9]+\.[0-9]+%)</span>#i',
  2. $strona,$matches);


No i tu mi się inwencja kończy... Mam zatem prośbę o pomoc do was. Czy to dopasowanie jest dobre i czy pobierze mi żądane dane? No i jak wyświetlić to na stronie (bez żadnego formatowania, w osobnych liniach oddzielonych tylko <br>)?

Pomóżcie, będę wdzięczny smile.gif
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
wry
post 10.12.2009, 14:39:04
Post #2





Grupa: Zarejestrowani
Postów: 32
Pomógł: 3
Dołączył: 9.06.2007

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


ja bym zrobil dwa dopasowania, tak zeby zawieraly jak najmniej kodu a jednoznacznie identyfikowaly dane,
pierwszy do popbrania wartosci, drugi do pobrania zmiany

  1. preg_match_all('/id="kurs_[^"]+">([^<]+)</', $i, $res1);
  2. preg_match_all('/id="procent_[^"]+" class="[^"]+">([^<]+)</', $i, $res2);


na wyjsciu masz dwie tablice jesli nic sie nei sypnelo beda tych samych rozmiarow i lecac indexami mozesz parowac ze soba wyniki (element o indexie 0 z tablicy $res1 bedzie wartoscia a element zerowy z tablicy $res2 bedzie zmiana procentowa itd)


--------------------
Go to the top of the page
+Quote Post
superstrona
post 10.12.2009, 15:14:36
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 10.12.2009

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


Daję kod:

  1. echo $res1[0];


i nic... tzn. pokazuje się Array i tyle... Chyba, że źle Cię zrozumiałem... wstydnis.gif
Go to the top of the page
+Quote Post
wry
post 10.12.2009, 20:39:27
Post #4





Grupa: Zarejestrowani
Postów: 32
Pomógł: 3
Dołączył: 9.06.2007

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


tak bo tablica $res1 i $res2 sa dwuwymiarowe
za pomoca print_r($res1); mozesz sobie podgladnac cala strukture
echo $res1[1][0] zwroci pierwszy wynik, poczytaj sobie o funkcji array_pop w manualu


--------------------
Go to the top of the page
+Quote Post
superstrona
post 10.12.2009, 21:50:12
Post #5





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 10.12.2009

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


Dzięki, działa smile.gif

Kod wygląda tak:

  1. preg_match_all('/id="kurs_[^"]+">([^<]+)</', $strona, $res1);
  2. preg_match_all('/id="procent_[^"]+" class="[^"]+">([^<]+)</', $strona, $res2);
  3.  
  4.  
  5. echo $res1[1][0];
  6.  
  7. echo $res2[1][0];


Musiałem zmienić tylko w dopasowaniu zmienną $i na $strona (bo w niej była treść strony). Poza tym wszystko w jak najlepszym porządku. Teraz czas na mnie by w wolnej chwili opanować dopasowania i wyrażenia regularne smile.gif Raz jeszcze dziękuję za pomoc.
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: 14.08.2025 - 05:38