Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [PHP]Wyświetlanie części innej strony w iframe
Xart
post 2.07.2014, 20:20:55
Post #1





Grupa: Zarejestrowani
Postów: 267
Pomógł: 6
Dołączył: 8.04.2013

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


Witam mam pewien problem nad którym się zastanawiam, czy jest on możliwy do zrealizowania wink.gif

Załóżmy że jest strona, która posiada informację o pogodzie np: http://pogoda.interia.pl (to tylko przykład) i chcę wyświetlić na innej stronie w iframe zawartość części tej strony (w tym przypadku sam widget z pogodą) z tego diva <div class="main-special">.
Da się to zrobić jakoś za pomocą PHP / ew jakoś inaczej ? Zakładamy, że div jest zawsze w dokładnie tym samym miejscu..
Go to the top of the page
+Quote Post
Turson
post 2.07.2014, 20:24:46
Post #2





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Skoro wiesz jaki to div, to sparsuj HTML jakąś klasą HTML DOM

Ten post edytował Turson 2.07.2014, 20:25:09
Go to the top of the page
+Quote Post
Michael2318
post 2.07.2014, 20:27:30
Post #3





Grupa: Zarejestrowani
Postów: 651
Pomógł: 116
Dołączył: 3.06.2012
Skąd: Lędziny

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


Zakładając, że ten div jest jakoś specjalnie wyróżniony na tej stronie (ma przypisaną indywidualną klasę/id/name), pobierasz całość kodu html do zmiennej jako string:

  1. $code_html = file_get_contents('http://pogoda.interia.pl');


teraz już zwyczajne operacje wykonujesz na wyrażeniach regularnych.

Tutaj jest przykład jak pobrać zawartość diva, który ma przypisaną klasę o nazwie lot-price-block: http://stackoverflow.com/questions/1527225...-div-with-class

Drugą metodą może być to: http://simplehtmldom.sourceforge.net/

Ten post edytował Michael2318 2.07.2014, 20:29:45
Go to the top of the page
+Quote Post
Xart
post 2.07.2014, 20:27:35
Post #4





Grupa: Zarejestrowani
Postów: 267
Pomógł: 6
Dołączył: 8.04.2013

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


Da się to zrobić str_get_html ?
Możesz podać jakis przykład ?
Go to the top of the page
+Quote Post
Turson
post 2.07.2014, 20:28:33
Post #5





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


W tym linku jest przykład
Go to the top of the page
+Quote Post
Michael2318
post 2.07.2014, 20:31:11
Post #6





Grupa: Zarejestrowani
Postów: 651
Pomógł: 116
Dołączył: 3.06.2012
Skąd: Lędziny

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


http://simplehtmldom.sourceforge.net/manual.htm
Go to the top of the page
+Quote Post
Xart
post 2.07.2014, 20:36:56
Post #7





Grupa: Zarejestrowani
Postów: 267
Pomógł: 6
Dołączył: 8.04.2013

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


A nie da się jakoś tego określonego diva wyświetlić w iframe ?
Go to the top of the page
+Quote Post
Michael2318
post 2.07.2014, 20:40:43
Post #8





Grupa: Zarejestrowani
Postów: 651
Pomógł: 116
Dołączył: 3.06.2012
Skąd: Lędziny

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


Ale po co tak kombinujesz, przecież podałem Ci praktycznie gotowca:

  1. $code = file_get_contents('http://strona.pl/');
  2.  
  3. $value = preg_match_all('/<div class=\"lot\-price\-block\">(.*?)<\/div>/s', $code, $matches);
  4.  
  5. print_r($matches);
Go to the top of the page
+Quote Post
Xart
post 2.07.2014, 20:48:49
Post #9





Grupa: Zarejestrowani
Postów: 267
Pomógł: 6
Dołączył: 8.04.2013

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


Bo takim sposobem coś nie działa...

  1. <?php
  2. $code = file_get_contents('http://pogoda.interia.pl/');
  3. $value = preg_match_all('/<div class=\"main-special\">(.*?)<\/div>/s', $code, $matches);
  4. print_r($matches);
  5. ?>


wyświetla

Array ( [0] => Array ( [0] =>
Zgłoś uwagi do serwisu POGODA
Powered byAccuWeather.com
) [1] => Array ( [0] => Zgłoś uwagi do serwisu POGODA
Powered byAccuWeather.com ) )

w dodatku bez obrazków itp... i jakieś tablice w tablicy


jeszcze kwestia tego że nie wie do którego </div> się odwołać.. bo tam są divy w divie

a nawet gdy dam do </html> to wyświetla to wszystko w formie tekstu bez ładnego ułożenia ITP...
Go to the top of the page
+Quote Post
Michael2318
post 2.07.2014, 20:50:43
Post #10





Grupa: Zarejestrowani
Postów: 651
Pomógł: 116
Dołączył: 3.06.2012
Skąd: Lędziny

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


Nie wiem jak wygląda ten div bo mi nie powiedziałeś na jakiej stronie bazujesz i jaki div konkretnie chcesz wyciągnąć ze strony.

Wyświetla Ci tablicę bo to jest własnie efekt funkcji print_r...
Go to the top of the page
+Quote Post
Xart
post 2.07.2014, 20:53:43
Post #11





Grupa: Zarejestrowani
Postów: 267
Pomógł: 6
Dołączył: 8.04.2013

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


Podałem dla przykładu tą stronę ale to tylko przykład: http://pogoda.interia.pl/
Próbuję wyświetlić to: http://screenshooter.net/2455104/jaojike
Go to the top of the page
+Quote Post
johny_s
post 2.07.2014, 20:55:43
Post #12





Grupa: Zarejestrowani
Postów: 594
Pomógł: 122
Dołączył: 17.07.2005
Skąd: P-na

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


no to pobierz jeszcze style i zdjęcia
Go to the top of the page
+Quote Post
Xart
post 2.07.2014, 20:56:43
Post #13





Grupa: Zarejestrowani
Postów: 267
Pomógł: 6
Dołączył: 8.04.2013

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


A file_get_contents nie pobiera automatycznie ?
Go to the top of the page
+Quote Post
johny_s
post 2.07.2014, 20:58:51
Post #14





Grupa: Zarejestrowani
Postów: 594
Pomógł: 122
Dołączył: 17.07.2005
Skąd: P-na

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


nie
Go to the top of the page
+Quote Post
Michael2318
post 2.07.2014, 21:02:15
Post #15





Grupa: Zarejestrowani
Postów: 651
Pomógł: 116
Dołączył: 3.06.2012
Skąd: Lędziny

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


Zauważ, że w kodzie jest np. coś takiego:

Kod
<img id="weather-currently-wind-icon" class="weather-currently-wind-icon" src="/i/icons-wind-header/1.png" alt="S"/>


Czy u Ciebie na serwerze pod taką lokalizacją znajduje się takie zdjęcie? Raczej wątpię, dlatego musisz sobie jeszcze dopisać wyrażenie, które będzie dopisywać pełną ścieżkę do tych obrazków:

Kod
<img id="weather-currently-wind-icon" class="weather-currently-wind-icon" src="http://pogoda.interia.pl/i/icons-wind-header/1.png" alt="S"/>


albo musisz pobrać te obrazki do siebie na FTP i zapisać je i podmienić ścieżkę, chyba, że zapiszesz je dokładnie pod taką samą ścieżką.

To samo dotyczy styli .css, jeśli nie masz u siebie klasy weather-currently-wind-icon, a ona np. jest odpowiedzialna za pogrubienie to nie licz, że w widoku u Ciebie na stronie tekst będzie pogrubiony.
.css też musisz stworzyć.
Go to the top of the page
+Quote Post
Xart
post 2.07.2014, 21:03:49
Post #16





Grupa: Zarejestrowani
Postów: 267
Pomógł: 6
Dołączył: 8.04.2013

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


No właśnie zapisywanie tego wszystkiego na FTP nie ma raczej sensu a parsowanie tego kodu nie będzie proste...
Nie da się tego zrobić jakoś za pomocą np JS ?
Go to the top of the page
+Quote Post
johny_s
post 2.07.2014, 21:05:54
Post #17





Grupa: Zarejestrowani
Postów: 594
Pomógł: 122
Dołączył: 17.07.2005
Skąd: P-na

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


nie prościej poszukać jakieś api udostępniające prognozy pogody?
Go to the top of the page
+Quote Post
Xart
post 2.07.2014, 21:07:36
Post #18





Grupa: Zarejestrowani
Postów: 267
Pomógł: 6
Dołączył: 8.04.2013

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


tak ale prognoza pogody to tylko przykład ja będę potrzebował wyświetlać zupełnie coś innego...
Chodzi mi tylko o sam sposób rozwiązania tego
Go to the top of the page
+Quote Post
johny_s
post 2.07.2014, 21:11:14
Post #19





Grupa: Zarejestrowani
Postów: 594
Pomógł: 122
Dołączył: 17.07.2005
Skąd: P-na

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


taki sposób jest wysoce ryzykowny, bo przestaje działać po zmianie na stronie z której się coś kradnie,
można napisać do właściciela serwisu czy by nie wystawił jakiegoś api
Go to the top of the page
+Quote Post
Michael2318
post 2.07.2014, 21:11:33
Post #20





Grupa: Zarejestrowani
Postów: 651
Pomógł: 116
Dołączył: 3.06.2012
Skąd: Lędziny

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


W ten sposób, który Ci przedstawiłem pobiera się najczęściej jakieś dane tekstowe, które co jakiś czas ulegają zmianie, a Ty sam nie jesteś w stanie tych danych odtworzyć. Dla przykładu chcesz wiedzieć ile wynosi kurs funta brytyjskiego. Wchodzisz na http://waluty.onet.pl/gbp-pln-kurs-funta-b...e-waluta-online, pobierasz sobie wartość diva, który ma przypisaną klasę o nazwie "cena":

Kod
<div class="cena">
                                             5,2043
                                       </div>


znalezisko sobie echujesz u siebie i stylizujesz według uznania. Żadnych zdjęć itp. tutaj nie potrzeba.

Ten post edytował Michael2318 2.07.2014, 21:12:11
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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: 29.04.2025 - 08:24