Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Wyświetlanie części innej strony w iframe
Xart
post
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 (IMG:style_emoticons/default/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
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 22)
Turson
post
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Xart
post
Post #21





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

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


Ale ja właśnie nie chcę wyświetlać żadnej wartości a uzyskanie api nie jest możliwe że tak powiem...
Potrzebuję konkretnej części strony (zakładając nawet ułożenie dokładne itp) może w zależności od pixeli da się to jakoś zrobić ?


Zawsze jest takie rozwiązanie:

  1. #my-div
  2. {
  3. width : 400px;
  4. height : 400px;
  5. overflow : hidden;
  6. position : relative;
  7. }
  8.  
  9. #my-iframe
  10. {
  11. position : absolute;
  12. top : -800px;
  13. left : -600px;
  14. width : 1280px;
  15. height : 1200px;
  16. }
  17. <div id="my-div">
  18. <iframe src="http://www.wp.pl/" id="my-iframe" scrolling="no"></iframe>
  19. </div>


ale jest ono bardzo mało wygodne...

Ten post edytował Xart 2.07.2014, 21:21:13
Go to the top of the page
+Quote Post
Michael2318
post
Post #22





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

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


Cały czas wracamy do punktu wyjścia... Wyrażenia regularne + przerobienie tamtejszych grafik na konkretne/docelowe urle z tamtej strony.

Jeśli chcesz się bawić z tym iframe to tutaj masz jakiś badziew: http://www.webdeveloper.com/forum/showthre...433#post1241433

gość ukrywa część strony, na podstawie overflow:hidden, bawi się z position:absolute, ogólnie kombinuje jak koń pod górę, a ciekawe co będzie jak nagle strona się wydłuży bo admin doda dwa nowe zdania gdzieś i całość strony się powiększy, wtedy te sztuczki na nic się zdają, ale jeśli chcesz to baw się i tak (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
ZaXaZ
post
Post #23





Grupa: Zarejestrowani
Postów: 285
Pomógł: 18
Dołączył: 30.01.2014
Skąd: <?=$_GET['city']?>

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


@Xart, zapomniałeś dać backslasha przed minusem w pregu.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 24.08.2025 - 13:42