Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Pobieranie danych z zewnetrznej strony...
marekk
post 28.12.2005, 12:43:36
Post #1





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 27.05.2003

Ostrzeżenie: (0%)
-----


Mam pewien problem do rozwiązania a mianowice potrezbuję pobrać z pewnej strony informacje wyciagane z bazy w pewnym miejscu tamtejszych stron i pozniej wyswietlic je w petli jakos ładnie na stronie wynikowej.

Zeby była jasnosc nie mam dostępu do bazy tamtejszej strony, po prostu mozna jawnie wywoływac strone zmieniając na końcu nr. ID. Ogolnie chodzi więc o jakies sensowne przefiltrowanie tamtych stron w petli, tak aby zostawiał tylko informacje z jakiejś tabelki. Moze ktoś robił coś podobnego albo ma pomysł jak to rozwiązac?

Na pierwszy rzut przychodzi mi do głowy tworzenie w petli plików, po czym odrazu otwieranie ich i kasowanie w formie np. od znaku jakiegostam do jakiegos ale czy nie da sie tego jakos prosciej ropzwiazac? A jesli nawet nie to jakimi funkcjami to wycinac - zywklymi eregami?
Go to the top of the page
+Quote Post
crash
post 28.12.2005, 13:19:24
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 196
Pomógł: 2
Dołączył: 17.01.2004
Skąd: Sosnowiec

Ostrzeżenie: (0%)
-----


Było wiele razy... file" title="Zobacz w manualu php" target="_manual + preg_match" title="Zobacz w manualu php" target="_manual/preg_match_all" title="Zobacz w manualu php" target="_manual w zupełności starczy...


--------------------
Go to the top of the page
+Quote Post
marekk
post 28.12.2005, 13:44:38
Post #3





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 27.05.2003

Ostrzeżenie: (0%)
-----


Własnie problem w tym, ze nie bardzo moge znalezc przykłady w wyszukiwarce.
A moglbys zpaodać jakis przykład albo link do watku z podobnym problemem?

Ogolnie dzieki za pomoc, moze jakos juz sobie poradz smile.gif
Go to the top of the page
+Quote Post
dtb
post 28.12.2005, 14:03:54
Post #4





Grupa: Zarejestrowani
Postów: 476
Pomógł: 1
Dołączył: 5.11.2005
Skąd: Bieruń city

Ostrzeżenie: (0%)
-----


  1. <?php
  2. // wczytanie pliku
  3. $bufor = file ('http://serwer/plik.html');
  4. ?>

i teraz na przykład na stronie jest takie coś:
  1. Jakieś tam dane: <b>WARTOŚĆ_KTORA_CHCEMY_POBRAC</b>

to robimy:
  1. <?php
  2. preg_match ('#Jakieś tam dane: <b>([a-zA-Z0-9_ ]+)</b>#', $file, $wynik);
  3. print_r ($wynik);
  4. ?>


Ten post edytował dtb 28.12.2005, 14:04:13


--------------------
Go to the top of the page
+Quote Post
marekk
post 2.01.2006, 12:06:05
Post #5





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 27.05.2003

Ostrzeżenie: (0%)
-----


W końcu poradziłem sobie z tym problemem tzn. wsyztskie funkcje mi działaja ok. i wiem juz jak wyciagac konkretne dane z pol, jednak mam pewne pytanie.

A mianowicie czy są jakieś zabezpieczenia przed ściąganiem informacji ze stron, które mozna jawnie wywołać zmieniając numer ID na koncu? Pytam bo tak sie dziwnie skłąda, ze informacje ktore chce sciągnąc z pewnej strony w niektorych jej miejscach czyta ok. ale niektorych nie pokazuje ich. Wszelkie instrukcje do wypisania pozniejszgeo nie maja znaczenia gdyz nawet zwykła funkcja FILE czy tez jakąkolwiek inna do wypisania pliku FGETS tez probowalem) wypisując zrodlo strony daje pusty rezultat tzn. kod strony ale bez danych z bazy.

Ten post edytował marekk 2.01.2006, 12:09:13
Go to the top of the page
+Quote Post
ennics
post 2.01.2006, 12:27:35
Post #6





Grupa: Zarejestrowani
Postów: 312
Pomógł: 0
Dołączył: 29.12.2004

Ostrzeżenie: (0%)
-----


o ile wiem nie ma sposobu na zablokowanie dostępu do źródła html strony,
skoro masz organoleptyczny ("wizualny") dostęp do danych to równie dobrze
może je "zobaczyć" Twoja aplikacja. Można natrafić na pozorne zabezpieczenia
np. http://www2.thecrims.com/, zobacz źródło, nawet jak wywołasz http://www2.thecrims.com/start.php to cofa Cię do indexu np. fopen nie zadziała prawidłowo. W takich sytuacjach najlepiej jest użyć biblioteki http://pl.php.net/curl" title="Zobacz w manualu php" target="_manual


--------------------
Go to the top of the page
+Quote Post
marekk
post 2.01.2006, 13:05:41
Post #7





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 27.05.2003

Ostrzeżenie: (0%)
-----


Hmm... ale wlasnie tam nie wydaje mi sie zeby było jakies obejscie, przynajmniej nic nie przekierowuje jawnie... zreszta sama zawartosc pliku cyzta tylko jak wspomniałem te wartosci z bazy cos mi omija nie wiem czemu :]

Zreszta zpaodam konkretnie strone:

strona 2580...
strona 2581...
itd...

Jak ja wypisze chocby w zwykłej petli jest wszytsko oprocz danych z bazy.

Kod
$html="";
$fp = fopen(http://www.nck.pl/bazydanych_inst.php?ins=2580,'r');
while ($line=fgets($fp,10000)) {
$html.=$line;
}

fclose($fp);

echo $html;


A np. z innego miejsca tej strony rowniez w przypadku plikow z informacjami z bazy, np. jakas inna strona

poprawnie moge wyciagnac całosc.
Go to the top of the page
+Quote Post
ennics
post 2.01.2006, 13:17:40
Post #8





Grupa: Zarejestrowani
Postów: 312
Pomógł: 0
Dołączył: 29.12.2004

Ostrzeżenie: (0%)
-----


chyba rozumiem w czym Twój problem tkwi. Próbujesz pobrać ze strony dane
ale dane te wyświetylają się dopiero po wypełnieniu formularza i kliknięciu szukaj ?
Linki które wkleiłes wyżej nie dają żadnego wyniku a to dlatego że dane z formularza
wyszukiwarki wysyłane sa metodą POST do skryptu, a ten dopiero zwraca wyniki.
Jeśli użyjesz fopen nie masz możliwości przesłania danych POST. Jak już pisałem
w tym momencie przychodzi z pomocą CURL i dwie funkcje:
  1. <?php
  2.  
  3.  curl_setopt($ch, CURLOPT_POST, 1);
  4.  curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
  5.  
  6. ?>


Ten post edytował ennics 2.01.2006, 13:18:07


--------------------
Go to the top of the page
+Quote Post
marekk
post 2.01.2006, 13:23:23
Post #9





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 27.05.2003

Ostrzeżenie: (0%)
-----


No rzeczywiscie tam jest akurat formularz suzkania :]

Ok. dzieki i w takim razie zaraz poprzegladam co te curle robia i jak je stosowac winksmiley.jpg
Go to the top of the page
+Quote Post
ennics
post 2.01.2006, 13:28:46
Post #10





Grupa: Zarejestrowani
Postów: 312
Pomógł: 0
Dołączył: 29.12.2004

Ostrzeżenie: (0%)
-----


jest jeszcze coś, i chyba nie chodzi o dane POST, zauważ że jeśli otworzysz
nowe okno wyszukiwarki w wkleisz link który podałeś wcześniej
strona 2580
nie otrzymasz ządnych danych. Teraz skorzystaj z formularza żeby wyszukać obojętnie jaką pozycję i ponownie wklei link. Powinno zadziałać. Dlaczego ? Trodno powiedzieć nie patrząc w kod. Możliwe że dostęp do bazy jest inicjowany wywołaniem jakiejś akcji w formularzu... anyway, CURL zawiera szereg funkcji którymi możesz symulować przeglądarkę.

Ten post edytował ennics 2.01.2006, 13:29:22


--------------------
Go to the top of the page
+Quote Post
marekk
post 2.01.2006, 19:30:44
Post #11





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 27.05.2003

Ostrzeżenie: (0%)
-----


Dzieki raz jeszcze i chyba obejdzie sie nawet bez curla. Z tego co zauważyłem w formularzu jest ukryte pole hidden "wys", które wystarczy ustawic na 1 i wyświetla dane w nowych oknach przeglądarki winksmiley.jpg

--------------------------------------------------------------------------------

Nie chciałem tworzyc nowego tematu wiec jeszcze tutaj z kolejnym problemem odnosnie tego watklu. Wyciągam sobie wsyztsko ponizszym kodem:

Kod
for ($i=2400; $i<2500; $i++) {

$nazwa="";
$nazwa = "http://www.nck.pl/bazydanych_inst.php?ins=$i&wys=1";
echo "<a href=$nazwa target='_blank'>".$nazwa."</a><br>";

$html="";
$fp = fopen($nazwa,'r');
while ($line=fgets($fp,10000)) {
$html.=$line;
}

fclose($fp);

preg_match_all("(<span class=\"normal\">(.*)</span></td></tr>)", $html, $matches);

echo $matches[0][0]."<br>";
echo "<hr>";
}


i dostaję dane, które chciałem otrzymac jednak nie posegregowane tzn. dane jedne po drugich - mam na myśli tą tablice $matches[0][0]... cyz wpisze tak czy $matches[1][0].. itp. zawsze wsyztsko jest razem w jednej zmiennej jakby. Nie da sie tego jakos rozdzielic i wypisac osobno chocby po przecinkach czy enterach, z tych znacznikow strony zrodłowej
Kod
<span class="normal">costam...</span></td></tr>
?

Ten post edytował marekk 2.01.2006, 19:33:21
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.07.2025 - 07:07