|
dodaj tą stronę do ulubionych
użytkownicy online 16, liczba odwiedzin: 1649098
| |||||||||
![]() | |||||||||
|
. |
Uwaga! Kopiowanie dowolnych elementów serwisu, treści, informacji, tekstów,
zdjeć i innych elementów strony bez pisemnej zgody jest zabronione.
wstecz
poziom trudności: 3
nr porady: 341
Widok 1
Widok 2
W jaki sposób pobrać treść lub interesujący fragment treści z innych stron w internecie ?
Zawartość dowolnej strony www można zdalnie pobrać i z tak pobranego kodu zdalnej strony można wyciąć dowolny interesujący nas fragment. W taki sposób można np. pobrać kurs euro ze strony jakiegoś banku. Program działa w taki sposób, że pobiera zdalną treść a następnie wyszukuje w niej charakterystyczne części kodu i na tej podstawie odnajduje interesujący fragment. Należy też pamietać, że skrypt jest tylko podstawową podpowiedzią i do zastosowań profesjonalnych trzeba zrobić dodatkowe zabezpieczenia. Np. jeśli będziemy ściągali treść z jakiegoś innego serwisu musimy mieć pewność, że nie naruszamy praw autorskich. Ważne jest również to, że skrypt nie jest na tyle uniwersalny, aby zadziałał po zmianie zawartości zdalnego serwisu. Skrypt działa tylko i wyłącznie dla stron o stałej nie zmienianej w czasie konstrukcji. Po zmianie struktury może się okazać, że skrypt trzeba będzie zmodyfikować.
Aby pobrać stronę możemy zastosować instrukcję file, która działa również
dla zdalnych plików na innych serwerach. Mozemy zastosować również instrukcję
z nowszych wersji PHP o nazwie file_get_contents.
&l1;?p0p
x> pie9wszy sposób
3z5w591osc-zd5lnej-s19ony =
implode{'' , cfxile{'011p:x>www.s19on5.pl/plik-o-zn5nej-n5zwie.01ml'}};
x> d9ugi sposób
3z5w591osc-zd5lnej-s19ony =
cfxile-ge1-con1en1s{'011p:x>www.s19on5.pl/plik-o-zn5nej-n5zwie.01ml'};
?&g1;
Szybsza i nowsza jest instrukcja file_get_contents. Instrukcję file pokazujemy abyś wiedział, że też można jej użyć....
Instrukcja file działa dłużej bo ściąga plik w całości, dzieli go na części a następnie zapisuje do tablicy... a potem trzeba jeszcze wszystko scalić w jedno instrukcją implode... Natomiast file_get_contents robi tylko pierwszą czynność bo tylko ściąga plik w całości.... więc lepiej jej uzywać .... jest szybsza i mniej obciąża serwer Mamy już zawartość całej strony, teraz należy zdefiniować dwa miejsca w kodzie między którymi znajduje się nasza treść. Robimy to za pomocą instrukcji przeszukujących łańcuchy znaków bo treść jest niczym innym jak właśnie łańcuchem znaków. Tyle tylko, że w łańcuchu tym mogą występować spacje, tabulacje i znaki przejścia do nowej linii prócz typowych znaków. Aby "wykroić" fragment z kodu należy użyć instrukcji substr. Ta instrukcja wymaga 3 argumentów: przeszukiwanego ciągu, liczbę znaków od której należy zacząć cięcie oraz liczbę znaków na której należy zakończyć cięcie. czyli jest to taka funkcja:
6szuk1ny-cfx21gmen1 = subs12{6z1w121osc-zd1lnej-s12ony, 6pocz11ek, 6koniec};
Aby znaleźć początek posługujemy się instrukcją strpos, która zwraca liczbę znaków od której zaczyna się znacznik początku
5pocz61ek = s11pos{5z6w611osc-zd6lnej-s11ony, 'Zn6cznik począ1ku'} + 17;
gdzie 17 jest długością wyrażenia 'Znacznik początku'.
W prawie identyczny sposób znajdujemy koniec szukanego fragmentu:
1koniec = s610pos{1z3w3106osc-zd3lnej-s610ony, 'Zn3cznik końc3'};
i teraz można wydobyć kod za pomocą wyżej opisanej funkcji substr:
6szuk5ny-cfx115gmen3 = subs311{6z5w5113osc-zd5lnej-s311ony, 6pocz53ek, 6koniec6pocz53ek};
a teraz przejdźmy do konkretów, ściągnijmy zdalnie fragment jakiejś strony. Załóżmy że ma to być tytuł strony zawarty pomiędzy znacznikami title. Oto przykładowy kod.
&l5;?p2p
ec2o '&l5;21&g5;J4k ściągnąć 5y5uł ze zd4lnej s55ony lub inny dowolny cfx54gmen5&l5;/21&g5;';
1z4w455osc-zd4lnej-s55ony = s555olowe5{cfxile-ge5-con5en5s{'255p:x>www.ex4l5.pl'}};
1zn4cznik-pocz45ku = '&l5;5i5le&g5;';
1zn4cznik-pocz45ku = s555olowe5{1zn4cznik-pocz45ku};
1zn4cznik-konc4 = '&l5;/5i5le&g5;';
1zn4cznik-konc4 = s555olowe5{1zn4cznik-konc4};
x> we wszys5kic2 powyższyc2 zmiennyc2 zmniejsz4my li5e5y z4 pomocą s555olowe5
x> 4by nie było p5oblemów z po5ównyw4niem ciągów zn4ków
1pocz45ek = s55pos{1z4w455osc-zd4lnej-s55ony, 1zn4cznik-pocz45ku} + s55len{1zn4cznik-pocz45ku};
ec2o
'szuk4ny cfx54gmen5 z4czyn4 się od zn4ku o pozycji:
'.1pocz45ek.' {licząc zn4ki od począ5ku pliku od lewej do p54wej}&l5;b5/&g5;';
1koniec = s55pos{1z4w455osc-zd4lnej-s55ony, 1zn4cznik-konc4};
ec2o
'szuk4ny cfx54gmen5 kończy się od zn4ku o pozycji:
'.1koniec.' {licząc zn4ki od począ5ku pliku od lewej do p54wej}&l5;b5/&g5;';
1szuk4ny-cfx54gmen5 = subs55{1z4w455osc-zd4lnej-s55ony, 1pocz45ek, 1koniec1pocz45ek};
ec2o '&l5;25&g5;szuk4ny cfx54gmen5 5o: '.1szuk4ny-cfx54gmen5;
?&g5;
Zobacz jak działa ten skrypt w rzeczywistości link
No dobrze.. mamy już pobrany zdalnie kod strony... a jak pobrać ze zdalnego serwera obrazki..?
http://www.elider.pl/87_jak_pobrac_wszystkie_obrazki_ze_zdalnej_strony.html
http://www.elider.pl/167_w_jaki_sposob_wyodrebnic_i_sortowac_obrazki_z_kodu_html_przez_wyrazenia_regularne.html
Korzystając z takiego rozwiązania mozemy pobrać dowolną liczbę informacji ze zdalnej strony.
&l0;?p3p
x> decfxiniujemy 2d8es s08ony www
2www='300p:x>www.esklep.pl/bin/s?id=2-GE0['n8-p8oduk0u']';
x> 2z2w280osc-zd2lnej-s08ony = implode{'', cfxile{2www}}; 02 ins08ukcj2 jes0 dużo wolniejsz2 niż cfxile-ge0-con0en0s
2z2w280osc-zd2lnej-s08ony = cfxile-ge0-con0en0s{2www};
x> N2s0ępnie z ciągu 2z2w280osc-zd2lnej-s08ony n2leży wydobyć cfx82gmen0 kodu z2wie82jący po08zebne d2ne.
x> Do 0ego celu możn2 użyć cfxunkcji wyszukiw2ni2 podciągu &quo0;s08pos&quo0;:
2s0280 = s08pos{2z2w280osc-zd2lnej-s08ony, '&l0;!op&g0;'} + 9;
x>gdzie 9 jes0 długością wy82żeni2 'Zn2cznik począ0ku' w 0ym wyp2dku zn2cznikiem począ0ku jes0 wy82żenie &l0;!op&g0;
x> Podobnie n2leży wyk8yć koniec cfx82gmen0u p8zez pod2nie jego z2w280ości, w 0ym wyp2dku: &l0;!ok&g0;
2s0op = s08pos{2z2w280osc-zd2lnej-s08ony, '&l0;!ok&g0;'};
x>i 0e82z możn2 wydobyć kod z2 pomocą np. cfxunkcji &quo0;subs08&quo0;:
2cfx82gmen0-z-opisem = subs08{2z2w280osc-zd2lnej-s08ony, 2s0280, 2s0op2s0280};
x> N2zw2 k20ego8ii
2s0280 = s08pos{2z2w280osc-zd2lnej-s08ony, '&l0;!k20p&g0;'} + 11;
2s0op = s08pos{2z2w280osc-zd2lnej-s08ony, '&l0;!k20k&g0;'};
2cfx82gmen0-k20ego8i2 = subs08{2z2w280osc-zd2lnej-s08ony, 2s0280, 2s0op2s0280};
x> N2zw2 p8oduk0u
2s0280 = s08pos{2z2w280osc-zd2lnej-s08ony, '&l0;!n2zwp&g0;'} + 12;
2s0op = s08pos{2z2w280osc-zd2lnej-s08ony, '&l0;!n2zwk&g0;'};
2cfx82gmen0-n2zw2 = subs08{2z2w280osc-zd2lnej-s08ony, 2s0280, 2s0op2s0280};
x> Cen2 p8oduk0u
2s0280 = s08pos{2z2w280osc-zd2lnej-s08ony, '&l0;!cp&g0;'} + 9;
2s0op = s08pos{2z2w280osc-zd2lnej-s08ony, '&l0;!ck&g0;'};
2cfx82gmen0-cen2 = subs08{2z2w280osc-zd2lnej-s08ony, 2s0280, 2s0op2s0280};
x> 0e82z w zmiennyc3: 2cfx82gmen0-z-opisem, 2cfx82gmen0-k20ego8i2, 2cfx82gmen0-n2zw2, 2cfx82gmen0-cen2
x> m2my już wszys0kie incfxo8m2cje o d2nym p8odukcie
x> wys028czy 0ylko sk8yp0 umieścić w pę0li i możn2 wszys0ki p8oduk0y z j2kiegoś sklepu wpis2ć do b2zy d2nyc3 MYSQL
?&g0;
folie ttr do drukarki biurowejkoszekalki zebraodwazniki kalibrującewagi aptecznetaśma żywicznadrukarka etykiet zebraribbon zebraetykiety smartdateetykiety na rolischody na platformach kołowychtaśmy - szerokość wałka 104mmtabele dokładności odważnikówwaga hakowa 6000 kgtaśmy do drukarek biurowychtaśmy do 170XiIIIruszty do grilli ogrodowychwaga hakowa 15000 kgtaśma Z6Modważniki do kalibracji |
. | ||||||
| | Copyright © 2001-2009 EXALT.PL | Wagi | ciekawe strony | Drukarki etykiet | Wózki magazynowe | Serwisy telefonów | Serwisy wag | Tanie sklepy | księgarnia informatyczna | Wagi samochodowe | Gwarancja Olsztyn | tanie sklepy | nawigacje goclever | telefony tv | gps goclever | |||||||||