Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][XML][PHP]Pobieranie danych ze strony
Forum PHP.pl > Forum > Przedszkole
dudi1261
Witam,
Potrzebuje skrypt do wyciagania pewnych danych z pewnej strony snitch.gif Jedyna droga jaka widze to pobieranie danych podlaczajac sie pod strone i wyciagajac informacje z <div> o okreslonych id="" i wyswietlanie na mojej stronie. Da sie takie cos zrobic? jesli nie ta metoda to w jaki inny sposob?
Pozdrawiam
lepmajster
Cytat(dudi1261 @ 21.06.2010, 17:07:18 ) *
Witam,
Potrzebuje skrypt do wyciagania pewnych danych z pewnej strony snitch.gif Jedyna droga jaka widze to pobieranie danych podlaczajac sie pod strone i wyciagajac informacje z <div> o okreslonych id="" i wyswietlanie na mojej stronie. Da sie takie cos zrobic? jesli nie ta metoda to w jaki inny sposob?
Pozdrawiam

  1. $zrodlo_strony = file_get_contents('strona.pl/index.html');
  2. //ewentualnie curl, jesli dochodzi do tego potrzeba zapytan POST
  3.  
  4. preg_match_all('[<div id="abc">(.+?)<\/div>]', $zrodlo_strony, $wynik); //do wyciagania ze zrodla czego potrzebujesz
yevaud
zamiast preg mozesz uzyc tez http://code.google.com/p/phpquery/
dudi1261
zrobilem:

Kod
<?php
$zrodlo_strony = file_get_contents('http://www.4esports.pl/index.html');
preg_match_all('[<span id="start_text">(.+?)<\/span>]', $zrodlo_strony, $wynik);
echo $wynik;
?>


zamiast wyswietlac jakas tresc wyswietla mi:
Cytat
Array


adres skryptu:
http://dudix.futureproject.xaa.pl/dane.php

Cos zle zrobilem?


// yevaud
musze to zainstalowac na serwerze www moim czy na tamtej stronie z ktorej pobieram dane tez musi byc?
lepmajster
Cytat(dudi1261 @ 21.06.2010, 20:06:22 ) *
zrobilem:

Kod
<?php
$zrodlo_strony = file_get_contents('http://www.4esports.pl/index.html');
preg_match_all('[<span id="start_text">(.+?)<\/span>]', $zrodlo_strony, $wynik);
echo $wynik;
?>


zamiast wyswietlac jakas tresc wyswietla mi:


adres skryptu:
http://dudix.futureproject.xaa.pl/dane.php

Cos zle zrobilem?


// yevaud
musze to zainstalowac na serwerze www moim czy na tamtej stronie z ktorej pobieram dane tez musi byc?

Nic poprostu zwrocony wynik to array, a wiesz co to array?
Musisz odpowiednio sie do niej dobrac np. $wynik[0][1];
Najlepiej zrob tak:
  1. print_r($wynik);

i zobaczysz gdzie masz interesujace cie dane.
dudi1261
wyswietlilo:

Kod
Array ( [0] => Array ( ) [1] => Array ( ) )


Wczesniej sie z tym Array nie spotkalem. Wiem jedynie, ze to jakas tablica ;> Jak z tego wyciagnac to co chcialem z tamtej strony?
lepmajster
Czyli zwraca pusta tablice, czemu?
Musiales wpisac zle dane, tzn przejrzyj zrodlo w przegladarce tej strony i wyszukaj tego czego potrzebujesz.
Skopiuj dokladnie miedzy ktorymi tagami wystepuje tekst, ktorego szukasz i wstaw do preg_match.
Zrobilem sobie na probe na localhost taki skrypt, wedlug tego co ci napisalem (myslalem ze moze zly wzorzec zrobilem), ale u mnie dziala.
W jednym pliku mam:
  1. <!-- plik strona.html -->
  2. <div id="abc">Dane do pobrania</div>

a w drugim
  1. $zrodlo_strony = file_get_contents('strona.html');
  2. preg_match_all('[<div id="abc">(.+?)<\/div>]', $zrodlo_strony, $wynik);
  3. print_r($wynik);

i wyswietla mi:
Cytat
Array ( [0] => Array ( [0] =>
Dane do pobrania
) [1] => Array ( [0] => Dane do pobrania ) )

czyli OK.
Sprawdz jeszcze co ci zwraca file_get_contents:
  1. echo $zrodlo_strony;

Po file_get_contents i najlepiej wstaw to echo miedzy <textarea></textarea>, zebys widzial caly kod.
dudi1261
Twoje dziala smile.gif
zaraz sprawdze co u mnie jest zle smile.gif Dzieki

@1:
Jak wyswietlic ta tablice bez tych napisow array?

@2:
zly byl link:
$zrodlo_strony = file_get_contents('http://dudix.futureproject.xaa.pl/strona.html'); - nie dziala
$zrodlo_strony = file_get_contents('strona.html'); - dziala

oznacza to samo a jednak nie dziala. masz jakis pomysl jak to inaczej zrobic?
lepmajster
Cytat(dudi1261 @ 21.06.2010, 22:44:05 ) *
Twoje dziala smile.gif
zaraz sprawdze co u mnie jest zle smile.gif Dzieki

@1:
Jak wyswietlic ta tablice bez tych napisow array?

@2:
zly byl link:
$zrodlo_strony = file_get_contents('http://dudix.futureproject.xaa.pl/strona.html'); - nie dziala
$zrodlo_strony = file_get_contents('strona.html'); - dziala

oznacza to samo a jednak nie dziala. masz jakis pomysl jak to inaczej zrobic?

Byc moze masz wylaczona ta funkcje na zewnetrzne serwery?
Moze zle wpisales adres, sprawdz go w przegladarce.
Trudno cos powiedziec, bo u mnie dziala nawet na zewnetrznej stronie.

Nie dziala tzn. ze echo $zrodlo_strony nic nie wyswietla?

EDIT: Co do pytania o array, to masz tam w [] wyswietlone klucze, w ktorych sa dane, np u mnie dane sa w:
  1. $wynik[0][0];
  2. // oraz w (z tego skorzystaj)
  3. $wynik[1][0];
dudi1261
Wyglada na to, ze mam wylaczona obsluge na adresy http://. Wrzucilem skrypt na moj drugi serwer www i smiga, ze az milo smile.gif
Dzieki



@ Kolejne bledy :<

Dziala tylko jesli kod w strona.html jest w jednej lini, co jest bardzo dziwne.
yevaud
Pattern Modifiers
i - Case Insensitive
m - Multiline mode - ^ and $ match start and end of lines
s - Dotall - . class includes newline
x - Extended– comments and whitespace
e - preg_replace only – enables evaluation of replacement as PHP code
S - Extra analysis of pattern
U - Pattern is ungreedy
u - Pattern is treated as UTF-8

wydaje mi sie ze powinienes dorzucic /ms
dudi1261
Szukalem w manualu i wszedzie gdzie dorzucic /ms ;d nigdzie o tym nie ma? o.O
lepmajster
Bo szukasz tam gdzie nie trzeba, tzn. szukaj w wyrazeniach regularnych, bo to:
Cytat
[<div id="abc">(.+?)<\/div>]ms

to wyrazenie regularne i to jedno z latwiejszych smile.gif

Zastosuj ten wzorzec co zacytowalem i powinno byc OK.
A tu masz lekture, dot. wyrazen regularnych w PHP - przyda ci sie w przyszlosci http://pl.wikibooks.org/wiki/PHP/Podstawy_...%84_regularnych
Ciezki klimat, sam sie tego ucze...

OFC. Podziekowania naleza sie yevaud, bo on wypatrzyl blad winksmiley.jpg
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.