Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zapis notowań giełdowych
Forum PHP.pl > Forum > PHP
Mati
Mam pytanie. Jak z danej strony internetowej wyciągnąć odpowiednie dane nie mając dostępu do jej baz danych, tlyko do wygenerowanych tabel. Postaram się to przedstawić na przykładzie, ktory mnie dręczy.

Śledzę notowania giełgowe 16 spółek (AGORA,EFEKT,ELKOP,EMAX,ELZAB,NETIA,OKOCIM,OPTIMUS,PKN
ŻYWIEC,BPH,BRE,COMPLAND,PEKAO,PROKOM,TPSA) na stronie
http://www.bankier.pl/inwestowanie/notowan...ania/akcje.html. Codziennie o 17 kopiuję tą stronę i spisuje ostatnie notowanie tych akcji (cena, i wachanie procentowe). Aby ułatwić sobie sprawę, chciałbym aby program w php skopiował mi te odpowiednie dane i zapisywał np. do bazy MySQL.
Jeżelli np. wejde o 17:00 na tą moją stronę z programem w php, to on skopiuje odpowiednie dane i zapisze je w bazie. Czy wie ktos jak to zrobić?



Pozdrawiam, Mati

http://webmaster.bajo.pl
http://4webFREE.prv.pl
scanner
Hint: wyrażenia regularne.
Mati
a dokladniej?
KaMeLeOn
Cytat
a dokladniej?

Były już takie tematy, poszukaj...
Mati
No wiem, ze byly, ale ja w php dlugo nie siedze, i probowalem, ale nic.. Gdybym wszystko umial sam zrobic, to bym sie nie pytal na forum. Dlatego proszę, aby ktoś spróbował to zrobić na moim przykładzie. Z góry wielkie dziex.


POzdrawiam, Mati
http://webmaster.bajo.pl
http://4webFREE.prv.pl
scanner
Jesli probowałeś, to pokaż co robiłeś.
Zobacz: to proste.

1. pobieramy plik do zmiennej.
2. sprawdzamiy, jaki fragment pliku źródłowego potrzebujemy (Np. Agora):
Kod
<tr align=center><td align=left><a  class=articleTitleLink href="/inwestowanie/profile/quote.html?symbol=AGORA&format=detailed">AGORA</a></td><td>[05-23 16:10]</td><td class="quoteUp">47.50</td><td class="quoteUp">0.30</td><td class="quoteUp">0.64</td><td>47.30</td><td>47.60</td><td>47.10</td></tr>

3. Zamieniamy to na schemat wyrażenia regularnego:[php:1:bb207db25b]<?php $__regExp = '<tr align=center><td align=left><a class=articleTitleLink href="/inwestowanie/profile/quote.html?symbol=AGORA&format=detailed">AGORA</a></td><td>[05-23 16:10]</td><td class="quoteUp">47.50</td><td class="quoteUp">0.30</td><td class="quoteUp">0.64</td><td>47.30</td><td>47.60</td><td>47.10</td></tr>'; ?>[/php:1:bb207db25b]
Uwaga: wyrażenie skonstruuuj sam. Ja nie jetsem pewien jak powinno wyglądać, więc nie chcę rozwlekać wątku. A na testowanie nie mam czasu.

4. Traktujemy (1) naszym wyrażeniem (hint: ereg*() )
5. Wyniki wstawiamy gdzie chcemy.
Tak zrobiłbym to ja.
Cudi
Hint: Nazwy spółek których dane chcesz uzyksać można zapisać w tablicy, a niektóre rzeczy w zmiennej $__regExp jak np. data, trzeba zastąpić odpowiednim wyrażeniem (poczytaj w manualu o funkcji eregi i eregi_replace, także komentarze)
Mati
ludzie czarna magia
evo
Cytat
Hint: Nazwy spółek których dane chcesz uzyksać można zapisać w tablicy, a niektóre rzeczy w zmiennej $__regExp jak np. data, trzeba zastąpić odpowiednim wyrażeniem (poczytaj w manualu o funkcji eregi i eregi_replace, także komentarze)


taaa a to mu duzo da :wink:

http://www.bankier.pl/inwestowanie/notowan...ania/akcje.html.

Strona o podanym adresie nie istnieje.
Jeżeli powinno być inaczej, skontaktuj się z zespołem technicznym: feedback@bankier.pl.


jak by strona istniala to bym ci erega walnal :wink:

Mati czy ty to ten Mati z Ygrega?
Cudi
Ja bym to zrobił preg_match_all'em, a potem jeszcze odpowiednio prztworzył zwróconą tablice tak żeby zostały "czyste" dane. Ale nie potrafiłbym napisać odpowiedniego wyrażenia regularnego smile.gif
scanner
Próbowałes robić cokolwiek, czy tylko poczekałeś trochę, żeby odświerzyć temat?
Jeśli to piewrwsze - pokaż co próbowałes robić.
Jesli to drugie - zastanów się, czt nie warto zająć się ogrodnictwem.
Mati
http://www.bankier.pl/inwestowanie/notowan...ania/akcje.html - to jest poprawny adres tlyko, ze bez kropki na kocu
scanner
A po cholere mi to? Ja już tam byłem, czego przykładem jest mój pierwszy post.
Ja się pytam, czy Ty kolego czekasz na gotowca, czy próbowałes już napisąc jakies w.regularne !!!
Mati
nigdy nie siedzialem w wyrazeniach regularnych, dlatego od razu wolalem sie zwrocic do kogos, kto ma o tym pojecvie
Jabol
my tu nie podajemy gotowców, tylko próbujemy pomóc ludziom dojśc do rozwiązań. Jeżeli chcesz pracować na podstawie tego co umiesz i nie podejmować wyzwań nauki to lepiej naprawde zostań ogrodnikiem, bo tam możesz pracować jednym narzędziem. Bo programowanie już takie jest. Cały czas musisz się uczyć, ba jak tego nie robisz to zostajesz w tyle!
Mati
A moglibyscie mi podac, jakies dobre zrobdla (dokladny adres) zeby zlookac w.reg??
scanner
Masz tutaj jeden z lepszych adresów.
Mati
Chyba będe potrzebowal duzo czasu zeby to zrozumiec. Próbuje cos ulozyc, ale nawet nie wiem jakie funkcje zastosowac, probowalem cos z eregi , ale jakies kompletne bzdurska mi powychodzily. Naprawdę sam się z tym nie uporam, i tu moja jedyna nadzieja.



Pozdrawiam, Mati


p.s. jeżeli nie chcecie mi pomóc za friko, to jestem w stanie zapłacić
DeyV
-> praca oferowana tongue.gif
Mati
no jak juz tu jest temat, to moze ktos sie zaoferuje
Jabol
Cytat
p.s. jeżeli nie chcecie mi pomóc za friko, to jestem w stanie zapłacić
Coś mi tu nie gra winksmiley.jpg . Polecam co książeczke albo coś. Ja sie nauczyłem z gazety SOFTWARE 2 z lutego zeszłego roku (hehe, a artykuł był na perla).
micro
Popytaj się u zródeł tych stron ,które wyświetlają takie notowania np. www.interia.pl
Ja np stosuje kursy walut z NBP . Poniżej skrypt,ale dotyczy tylko kursów:
[php:1:569dcd7d9b]
<?
$f = @fopen("http://www.nbp.pl/Kursy/KursyA.html", "r");
if ($f) {
while(!feof($f)) $strona.= fread($f,1024); fclose($f);
$strona = preg_replace("/r/", " ", $strona);
$strona = preg_replace("/n/", " ", $strona);

preg_match("/z dnia <b>(.*?)</b>/", $strona, $zdnia);
echo "<br>średnie kursy walut <br>NBP z ". $zdnia[1];
preg_match_all ("/<tr valign="middle">.*?</tr>/", $strona, $sa);
for ($i=0; $i<count($sa[0]); $i++) {
preg_match("/new">(.*?)</td/", $sa[0][$i], $waluta);
preg_match("/lne">(.*?)</td/", $sa[0][$i], $kurs);
if (eregi("USD",$waluta[1])) echo "<br>1 USD - ".$kurs[1];
if (eregi("EUR",$waluta[1])) echo "<br>1 EUR - ".$kurs[1];
if (eregi("GBP",$waluta[1])) echo "<br>1 GBP - ".$kurs[1];
}
}
?>
[/php:1:569dcd7d9b]
Na podobnej zasadzie jest z notowaniami. Po wczytaniu strony, wystarczy za pomocą wyrażeń regularnych wyciąć z niej odpowiednie fragmenty tabeli i wypisać tylko te spółki, które cię interesują. Możesz oczywiście dopisać nazwy kolejnych spółek.
Program przestanie działać w chwili, gdy strona zmieni adres, układ i kod swoich stron WWW.
Możesz na podstawie tego podobnego mechanizmu zrobić notowania z giełd

Proszę używać znaczników php - [KaMeLeOn]
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.