Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Skrypt odczytujacy kurs dzienny zlota ze strony
Forum PHP.pl > Forum > PHP
swiezak
Pod adresem: kitco.com, po prawej stronie znajduje sie tabela z kursem dziennym zlota, ktory jest w postaci xxxx.xx. W tej chwili jego wartosc wynosi 1098.00.
W jaki sposob pobrac ta wartosc przy uzyciu np. file_get_html lub curl?

Fragment osadzonego na stronie formularza:
  1. <span id="dgc_index">1098.00</span> /* szukana wartosc */


Probuje w ten sposob:
  1. $html = @file_get_html("http://www.kitco.com");
  2. $gold = $html->find('span[id="dgc_index"]', 0);


Prosze o podpowiedz, w jaki sposob sparsowac zrodlo strony, aby wydobyc z niego szukana wartosc.
Comandeer
http://php.net/manual/en/domdocument.loadhtml.php + http://php.net/manual/en/domdocument.getelementbyid.php
To, czego chcesz użyć, to funkcje super przestarzałej biblioteki Simple HTML DOM.
swiezak
Moze i super przestarzala, ale wystarczala do pomniejszych projektow.

Postanowilem zaprzac do pracy curl i popelnilem cos takiego:
  1. $base = 'http://www.kitco.com';
  2.  
  3. $curl = curl_init();
  4. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
  5. curl_setopt($curl, CURLOPT_HEADER, false);
  6. curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
  7. curl_setopt($curl, CURLOPT_URL, $base);
  8. curl_setopt($curl, CURLOPT_REFERER, $base);
  9. curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
  10. $str = curl_exec($curl);
  11. curl_close($curl);
  12.  
  13. $html_base = new simple_html_dom();
  14. $html_base->load($str);
  15.  
  16.  
  17. foreach($html_base->find('span') as $element) {
  18. ...
  19. }
  20.  
  21. //$mat = $html_base->find('span#dgc_index');
  22. preg_match( '/<span id="dgc_index">(.+?)</span>/i', $html, $mat);
  23.  
  24.  
  25. $html_base->clear();
  26. unset($html_base);


Nie bardzo wiem, jak sobie poradzic z "wyluskaniem" wartosci kursu dziennego zlota.
viking
Masz już w zasadzie kod, w czym problem?
  1. $mat = $html_base->find('span#dgc_index', 0);
  2. var_dump($mat->plaintext);
  3. string(8) "1098.00 "
swiezak
Dzieki serdeczne za pomoc. Jak zwykle na prostych rzeczach potrafie sie wylozyc.

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