Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wyciąganie danych z wcześniej wczytanej strony
Forum PHP.pl > Forum > PHP
dekrzycho
Witam,
Wiem że było to wałkowane ale nie moge znaleść dla siebie żadnych rad...
Może mi pomożecie...

Mam skrypt który pobiera mi stronę i daje coś takiego...


  1. <tr bgcolor="#f5f5f5" height="27">
  2. <td cellpadding="3" class="tablebody" align="left"><a href="/dla_ciebie/centrum_oszczedzania/fundusze_inwestycyjne/?_fund=1182%20">AIG TFI S.A.</a></td>
  3. <td background="/images/backgrounds/co_point.gif" width="1"><img src="/images/backgrounds/co_point.gif" border="0" height="1" width="1"></td>
  4. <td cellpadding="3" class="tablebody1on" align="left"><a href="/dla_ciebie/centrum_oszczedzania/fundusze_inwestycyjne/?_fund=1182%20">AIG FIO Akcji</a></td>
  5. <td background="/images/backgrounds/co_point.gif" width="1"><img src="/images/backgrounds/co_point.gif" border="0" height="1" width="1"></td>
  6. <td cellpadding="3" class="tablebody" align="left"><a href="/dla_ciebie/centrum_oszczedzania/fundusze_inwestycyjne/rodzaje_funduszy" onclick="submitForm('FA')">FA</a></td>
  7. <td background="/images/backgrounds/co_point.gif" width="1"><img src="/images/backgrounds/co_point.gif" border="0" height="1" width="1"></td>
  8. <td cellpadding="3" class="tablebody" align="left">
  9. <a href="/dla_ciebie/centrum_oszczedzania/jak_oszczedzac?_a=3459"><img src="/images/common/kolo.gif" border="0" height="6" width="7"><img src="/images/common/kolo.gif" border="0" height="6" width="7"><img src="/images/common/kolo.gif" border="0" height="6" width="7"></a>
  10. </td>
  11. <td background="/images/backgrounds/co_point.gif" width="1"><img src="/images/backgrounds/co_point.gif" border="0" height="1" width="1"></td>
  12. <td cellpadding="3" class="tablebody" align="left"><nobr>17,18</nobr></td>
  13.  
  14. <td background="/images/backgrounds/co_point.gif" width="1"><img src="/images/backgrounds/co_point.gif" border="0" height="1" width="1"></td>
  15. <td cellpadding="3" class="tablebody" align="left"><nobr>1,66</nobr></td>
  16. <td background="/images/backgrounds/co_point.gif" width="1"><img src="/images/backgrounds/co_point.gif" border="0" height="1" width="1"></td>
  17. <td class="tablebody" align="right">
  18. <nobr>1,96</nobr></td>
  19. <td background="/images/backgrounds/co_point.gif" width="1"><img src="/images/backgrounds/co_point.gif" border="0" height="1" width="1"></td>
  20. <td class="tablebody" align="right">
  21. <nobr>10,55</nobr></td>
  22. <td background="/images/backgrounds/co_point.gif" width="1"><img src="/images/backgrounds/co_point.gif" border="0" height="1" width="1"></td>
  23. <td class="tablebody" align="right">
  24. <nobr>17,43</nobr></td>
  25. <td background="/images/backgrounds/co_point.gif" width="1"><img src="/images/backgrounds/co_point.gif" border="0" height="1" width="1"></td>
  26. <td class="tablebody" align="right">
  27.  
  28. <nobr>30,55</nobr></td>
  29. <td background="/images/backgrounds/co_point.gif" width="1"><img src="/images/backgrounds/co_point.gif" border="0" height="1" width="1"></td>
  30. <td class="tablebody" align="right">
  31. <nobr>---</nobr></td>
  32. <td background="/images/backgrounds/co_point.gif" width="1"><img src="/images/backgrounds/co_point.gif" border="0" height="1" width="1"></td>
  33. <td cellpadding="3" class="tablebody" align="left"><nobr>16.03.2006</nobr></td>
  34. </tr>




A ja bym chciał otrzymać trzy dane z tej sieczki......
Nazwa wartość data
AIG FIO Akcji 17,18 16.03.2006

W tym krypcie jest więcej informacji ale nie są one mi potrzebna...
Może pomożecie mi z tym.
Z góry dzięki za pomoc...
nospor
Przenoszę z php5
chomiczek
preg_match_all() warunek taki, że strona musi być w miarę sztywna w środku.. zbudowana w oparciu o jakis stały schemat.
dekrzycho
Cytat(chomiczek @ 2006-03-18 20:54:34)
preg_match_all() warunek taki, że strona musi być w miarę sztywna w środku.. zbudowana w oparciu o jakis stały schemat.

Tak, znalazłem już że mogę tą funkcją zrobić to ale ona ma za skomplikowane parametry...
Możesz mi podrzucić coś bo próbowałem tak ale nie działa....


  1. <?php
  2.  
  3. $data=curl_exec($ch); //w tej zmiennej przechowywana jest zawartość strony
  4. ///////////////////
  5. preg_match_all ('#([A-Za-z- ]+)</a></td>
  6. ([0-9.]+)</nobr></td>>
  7. ([0-9.]+)</nobr></td>>
  8. ([0-9.]+)</nobr></td>', $data, $wynik);
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16. echo $wynik;
  17.  
  18. ?>
chomiczek
ja bym to zrobił tak:
  1. <?php
  2.  
  3. preg_match_all ('/<tr bgcolor=\"#f5f5f5\".*?fund=1182%20\">(.*?)</a>.*?class="tablebody" align=\"left\"><nobr>(.*?)<\/nobr><\/td>', $data, $wynik);
  4.  
  5. ?>


teraz $wynik[1][0] powinno Ci zwrócić AIG TFI S.A
a $wynik[2][0] 17,18

z resztą kombinuj

P.S. Pisałem z ręki, więc moze niedziałać
dekrzycho
Cytat(chomiczek @ 2006-03-18 21:44:24)
ja bym to zrobił tak:
  1. <?php
  2.  
  3. preg_match_all ('/<tr bgcolor=\"#f5f5f5\".*?fund=1182%20\">(.*?)</a>.*?class="tablebody" align=\"left\"><nobr>(.*?)<\/nobr><\/td>', $data, $wynik);
  4.  
  5. ?>


teraz $wynik[1][0] powinno Ci zwrócić AIG TFI S.A
a $wynik[2][0] 17,18

z resztą kombinuj

P.S. Pisałem z ręki, więc moze niedziałać

dzieki za podpowiedź ale coś nie działa...
wyświetla mi komunikat


Warning: preg_match_all(): Unknown modifier 'a' in /home/

holerka nie znam tych podstawowych wyrażeń....
Zbłąkany
Przy zamykającym tagu </a> jest błąd, powino być:
  1. <?php
  2. preg_match_all ('/<tr bgcolor=\"#f5f5f5\".*?fund=1182%20\">(.*?)<\/a>.*?class=\"tablebody\" align=\"left\"><nobr>(.*?)<\/nobr><\/td>', $data, $wynik);
  3. ?>
dekrzycho
Cytat(Zbłąkany @ 2006-03-19 10:46:45)
Przy zamykającym tagu </a> jest błąd, powino być:
  1. <?php
  2. preg_match_all ('/<tr bgcolor=\"#f5f5f5\".*?fund=1182%20\">(.*?)<\/a>.*?class=\"tablebody\" align=\"left\"><nobr>(.*?)<\/nobr><\/td>', $data, $wynik);
  3. ?>

tera krzyczy cos takiego....

Warning: preg_match_all(): No ending delimiter '/' found in /home



ja nie mam pojecia juz jak to napisac....
tiraeth
  1. <?php
  2. preg_match_all ('/<tr bgcolor=\"#f5f5f5\".*?fund=1182%20\">(.*?)<\/a>.*?class=\"tablebody\" align=\"left\"><nobr>(.*?)<\/nobr><\/td>/', $data, $wynik);
  3. ?>


Wyrażenie rozpoczynasz '/<tr więc wypadałoby zakończyć ten parametr też *slashem* td>/'

smile.gif
dekrzycho
Cytat(tiraeth @ 2006-03-19 13:02:46)
  1. <?php
  2. preg_match_all ('/<tr bgcolor=\"#f5f5f5\".*?fund=1182%20\">(.*?)<\/a>.*?class=\"tablebody\" align=\"left\"><nobr>(.*?)<\/nobr><\/td>/', $data, $wynik);
  3. ?>


Wyrażenie rozpoczynasz '/<tr więc wypadałoby zakończyć ten parametr też *slashem* td>/'

smile.gif

Napisałem coś takiego.....

  1. <?php
  2.  
  3. preg_match_all( '!<nobr>(.*?)</nobr>!si',$data, $wynik); 
  4.  
  5. ?>


Pobiera mi dane liczbowe,

a ten skrypt poniżej pobiera mi nazwy
  1. <?php
  2.  
  3. preg_match_all ('!<td cellpadding=\"3\" class=\"tablebody1on\" align=\"left\"><a.*?\">(.*?)<\/a><\/td>!si', $data, $wynik);
  4.  
  5. ?>

A może wiecie jak to połączyć.....

Dziki za podpowiedzi...
chomiczek
wrzuc do jednego, a pomiędzy obydwa wrzuc .*? lub .* zależnie od tego jak to wygląda u Ciebie w kodzie.. ewentualnie mozesz wrzucić jakiś fragment kodu który pojawi sie pomiędzy tym. I faktycznie zapomniałem od / na końcu sad.gif
dekrzycho
Cytat(chomiczek @ 2006-03-19 19:01:09)
wrzuc do jednego, a pomiędzy obydwa wrzuc .*? lub .* zależnie od tego jak to wygląda u Ciebie w kodzie.. ewentualnie mozesz wrzucić jakiś fragment kodu który pojawi sie pomiędzy tym. I faktycznie zapomniałem od / na końcu sad.gif

Dzięki za pomoc,
fantastycznie działa..
Teraz musze pomyśleć jak z tego wyciągać dane które mnie interesują i wrzucać do MySQLa.

Jeszcze raz dziękuję...
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.