Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pobieranie nagłówków danych z innej www
Forum PHP.pl > Forum > PHP
adek-
Witam, czy da się pobrać ze strony już przetworzonej dane i wrzucenie ich do swojej strony? Przechwycenie nagłówka, bądź coś takiego. A dokładniej chodzi o jedna wartość http://stooq.pl/q/?s=xaupln i jest tam wartość
"Kurs 4194.8 zł/ozt". Chciał bym wartość 4194,8 pobrać i wrzucić u siebie do obróbki i wyliczeń. Napisałem do nich, czy udostępniają takie pojedyncze dane, ale brak odezwu z ich strony, a wiem, że udsotępniają takie webmasterskie narzędzia, ale np w postaci wykresów, czy historii całościowej. Da sie pobierac takie dane i sczytywać?



edytowano:
daja tez takie wpisy
<script type="text/javascript" src="http://static.stooq.pl/pp/w.js"></script>
gdzie chyba łatwiej by było pobierać dane poprzez formatowanie tego js. Ale ten js akurat nie przedstawia dokładnie tego co potrzebuję ;/
Spawnm
file_get_constents + preg_match
Daimos
ewentualnie poszukaj na stronie nbp, zazwyczaj udostępniają przynajmniej rssy z takimi danymi
adek-
Daimos niestety NBP udostepnia takie wartości ale bez międzybanku ;/ Więc jest mi bezużyteczny... stąd moje zapytanie
Spawnm działa, ale wartości te wrzuca w niezbyt czystej postaci. Dało by sie pousuwać te ( [0] +> itd? tak żeby została sama wartość 4195,4, bo chcę ją wciągnąć w zmienną którą będę obrabiał, mnożył itd?
Wiem, że gdyby to była stała liczba było by łatwiej, ale ona się zmienia co 1-3 sec.
Wyświetla mi tak:
  1. Array
  2. (
  3. [0] => Kurs
  4. 4195.4 zł/ozt
  5. [1] => /
  6. )


a zrobilem to tak
  1. <?php
  2. $subject = file_get_contents("http://stooq.pl/q/?s=xaupln");
  3. str_replace('/','//',$subject);
  4. preg_match(' /Kurs<br>.*?(s*?.*?)*?ozt/i', $subject, $matches);
  5. echo "<br /><pre>";
  6. print_r ($matches);
  7. echo "</pre>";
  8. ?>
Fluke
A tutaj by się nie przydał SOAP?
adek-
Ale z tego co widze SOAP jest do transmisji danych xml, a takich tutaj nie ma, tzn ja nie mam do nich dostępu. Łatwiej było by chyba czymś przetworzyć dane i wyrzucić te znaki niepotrzebne. Jest taka funkcja która mogła by się z tym rozprawić? Nakierujcie proszę.
cycofiasz
  1. preg_match('#aq_xaupln_c1\|3>([0-9\.]+)</span>#Uis',$subject,$matches);
adek-
Dzięki wielkie chłopaki... Spawnm i cycofiasz Wasze podpowiedzi były trafne, udało się i dziękówki lecą

  1. //pobieranie danych
  2. $subject = file_get_contents("http://stooq.pl/q/?s=xaupln");
  3. str_replace('/','//',$subject);
  4. preg_match('#aq_xaupln_c1\|3>([0-9\.]+)</span>#Uis',$subject,$matches);
  5. echo "<br /><pre>";
  6. // print_r ($matches);
  7. $wartosc = $matches[1];
  8. echo "<b>Wartość zmiennej to - " .$wartosc. " zł</b><br>";
  9. echo "</pre>";


Mam tylko pytanie do cycofiasza o rozwikłanie dla mnie zagadki.
kod na stronie źródłowej:
  1. <td id="f13" height="55" width="15%">Kurs<br><b><span style="font-weight: bold;" id="aq_xaupln_c1">4159.7</span></b>&nbsp;zł/ozt</td>

kod który Ty umieściłeś:
  1. preg_match('#aq_xaupln_c1\|3>([0-9\.]+)</span>#Uis',$subject,$matches);

na www jest < .... id="aq_xaupln_c1"> a Ty po c1 zamiast "> umieściłeś \|3>([0-9\.]+) oraz na końcu #Uis
co oznaczają te dane i co dały tak naprawdę, mógłbyś proszę, albo ktoś z obecnych wytłumaczyć zasadę powyższego? Z góry dziękuję
cycofiasz
Ja pobrałem te dane z innego miejsca w kodzie:

  1. Kurs<br><b><span style=font-weight:bold id=aq_xaupln_c1|3>4158.8</span>


Co do Uis to są to modyfikatory zmieniające zachowanie wyrażenia. i = nie zwraca uwagi na wielkość liter , s = kropka (wieloznacznik) może oznaczać także łamanie linii (domyślnie nie zawiera łamania linii) , U - kończy dopasowywać .+ najszybciej jak tylko możliwe, gdyby tego nie było to za pewne oprócz kwoty pobrałoby także wszystko do ostatniego znacznika </span>
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.