Mati
24.05.2003, 17:58:52
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
24.05.2003, 21:35:10
Hint: wyrażenia regularne.
Mati
24.05.2003, 21:50:44
a dokladniej?
KaMeLeOn
24.05.2003, 23:33:10
Cytat
a dokladniej?
Były już takie tematy, poszukaj...
Mati
24.05.2003, 23:52:33
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
25.05.2003, 06:47:18
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
25.05.2003, 10:05:48
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
26.05.2003, 15:52:57
ludzie czarna magia
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
26.05.2003, 17:14:21
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
scanner
26.05.2003, 17:26:53
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
26.05.2003, 19:51:14
scanner
26.05.2003, 19:58:05
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
26.05.2003, 20:03:08
nigdy nie siedzialem w wyrazeniach regularnych, dlatego od razu wolalem sie zwrocic do kogos, kto ma o tym pojecvie
Jabol
26.05.2003, 20:05:57
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
26.05.2003, 20:13:03
A moglibyscie mi podac, jakies dobre zrobdla (dokladny adres) zeby zlookac w.reg??
scanner
26.05.2003, 20:17:35
Mati
26.05.2003, 22:46:08
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
27.05.2003, 09:19:20
-> praca oferowana
Mati
27.05.2003, 14:13:51
no jak juz tu jest temat, to moze ktos sie zaoferuje
Jabol
27.05.2003, 14:24:36
Cytat
p.s. jeżeli nie chcecie mi pomóc za friko, to jestem w stanie zapłacić
Coś mi tu nie gra

. 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
27.05.2003, 20:13:31
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.