Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][HTML][PHP]Jak pobrać div'a z innej strony?
Forum PHP.pl > Forum > Przedszkole
TajnyAgent
Witam, chciałbym, by na mojej stronie była wyświetlana dana wartość z danego div'a z danej strony.
Użyłem dokładnie takiego kodu:
Kod
<?php
$strona = file_get_contents('http://www.showup.tv/');

echo '<pre>';
preg_match('/<div class="viewer-stats">(.*)<\/strong>/s', $strona, $wynik); // (.*) pobiera wszystko bez wyjątku
var_dump($wynik);
?>


Niestety wyskakuje mi:
Kod
array(0) {
}


Z tego co wyczytałem, to wydaję mi się, że strona ta blokuje wyciąganie danych w ten sposób i podobno może pomóc cURL, ale dalej to nie wiem co robić z tą informacją.

Pozdrawiam i z góry dziękuję za pomoc smile.gif
NickOver
Zrób:
  1. var_dump($strona);

Wtedy zobaczysz że nie pojawia się strona, lecz monit o dostępie do strony.

Musisz do tego użyć cURL'a KLIK
TajnyAgent
Użyłem w takim razie teraz takiego kodu przy pomocy cURL'a:
Kod
<?php
$ch = curl_init('http://www.showup.tv');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$wejscie = curl_exec($ch);
curl_close($ch);
preg_match('/<div class="viewer-stats">(.*)<\/div>/s', $wejscie, $wyjscie);

print_r($wyjscie);
?>


A kiedy zmieniłem print_r z $wejscie na $wyjscie, to wyskakuje mi coś takiego:
Kod
301 Moved Permanently

nginx

Jakieś pomysły?

To co, pomoże ktoś? Coś robię źle, czy za pomocą cURL'a z tej strony też się nie da wyciągnąć div'a?
fate
zabezpieczenia maja nie nawojujesz widze
sprobuj wrzucic konkretny link a nie strone główną na poczatek
TajnyAgent
Próbowałem już i niestety nic to nie pomogło... A czy jest opcja, by skrypt jakoś mógł jak zwykły bot akceptować regulamin, który wyskakuje za pierwszym razem przy wejściu na stronę i wtedy wyciągnąć div'a?
Comandeer
To zależy jak ten regulamin jest wyświetlany. Jeśli przez JS, to trza by kombinować z PhantomJS.
TajnyAgent
Sprawdziłem poprze opcję "Zbadaj element" i nie widziałem tam żadnego skryptu JS, jeszcze jakieś pomysły? Jeżeli to za trudne i o za dużo proszę, to sobie odpuszczę oczywiście, nie chcę tu wyciągać żadnej złotej wiedzy tongue.gif
markuz
Spróbuj wejść na:

Cytat

I obsłuż przekierowanie + zapisywanie cookies (to da się zrobić w cURL)
TajnyAgent
To już robiłem, ale o zapisywaniu cookies nie pomyślałem, dzięki. Zaraz sprawdzę i się odezwę smile.gif

  1. <?php
  2. $ch = curl_init('http://showup.tv/');
  3. curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
  4. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  5. $cookies = "cookie1=".urlencode("this_is_cookie1").";cookie2=".urlencode("this_is_cookie2");
  6. curl_setopt($ch, CURLOPT_COOKIE, $cookies);
  7. $wejscie = curl_exec($ch);
  8. curl_close($ch);
  9. preg_match('/<div class="profile-list">(.*)<\/div>/s', $wejscie, $wyjscie);
  10.  
  11. print_r($wyjscie);
  12. ?>


Napisałem taki kod, w dobrą stronę poszedłem? Jeżeli nie, bądź tak, to mam coś naprawić, albo dodać? Wydaję mi się, że musi być jakiś kod zapisujący te ciasteczka na serwerze, a ja sam wpierw muszę je wygenerować, póki co to przy tym kodzie próbowałem zaakceptować regulamin, ale jak z powrotem wszedłem na stronę, to znowu był wymóg zaakceptowania regulaminu, także coś nie halo(Oczywiście sprawdzałem to przy print_r($wejscie)
@Edit
Aha i próbowałem także z tym linkiem, który jest odnośnikiem przycisku "Akceptuj", czyli ten który napisałeś, ale wyglądało to tak samo, że był nadal wymóg akceptacji regulaminu/
markuz
Myślisz, że losowe cookies pomogą? Bo twoje wyglądają na losowe. cURL zrobi to za Ciebie, tylko podaj dobrą ścieżke i zadbaj o uprawnienia:
  1. curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookies.txt');
  2. curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookies.txt');


I nie próbuj z tym linkiem, tylko zrób - to jest wymagane jak chcesz żeby działało.
TajnyAgent
Kod
http://showup.tv/site/accept_rules/yes?ref=http://showup.tv/
Nie mam próbować z tym linkiem? O to ci chodzi, bo nie za bardzo zrozumiałem. Ale poszło z tym twoim kodem i od razu przechodzi na stronę główną, czyli jest progress. Jednakże kiedy print_r mam ustawione na $wyjscie to w Array nadal nic się nie wyświetla :/
@Edit
Dobra, zmieniłem link na stronę główną i poprawiłem nazwę div'a(Bo uciekło mi s) I wszystko ładnie śmiga, dzięki wielkie ! smile.gif
markuz
Jak poprawiłeś link na stronę główna, to skrypt przestanie działać zaraz po tym jak się skończy sesja po stronie serwera.
TajnyAgent
A okej, czyli mam mieć tamten link co na początku podałaś. Dobra, już poprawiam, trochę mnie zmyliłeś, więc wstawiłem link do strony głównej. Jeszcze raz dzięki za pomoc smile.gif

Mam kolejny problem, nie potrafię zaimplementować kodu php do pliku html, nawet w oddzielnym pliku nie działa. Jeżeli zaimplementuje kod html w kodzie php, to także nie działa, próbowałem dodawać linijki specjalne w .htaccess. Ale nic to nie zmieniło, ktoś pomoże?

@Edit
Udało mi się zaimplementować kod html w kodzie php, ale wolałbym na odwrót tj. zaimplementować kod php w kodzie html

I w między czasie mam kolejny, akurat mały problem, ale jakoś nie mogę sobie poradzić. Chciałbym usunąć te oznaczenia tj. "Array ( [0] =>
) "
________________________________________________________________________________

Dobrze, udało mi się usunąć te oznaczenie tablicy, zamieniając print_r na echo. Jest niby wszystko okej, choć wolałbym tak jak już wcześniej napisałem - zaimplementowany kod php w html, a nie na odwrót smile.gif No ale najwyżej będę pisał w php. Kontynuując, mój kod wyciągający te div'y odnosi się do folderu z obrazkami, których nie ma u mnie na serwerze, czy jest jakaś opcja, by się odnosił do folderu z obrazkami na stronie z której ściągam te div'y?
________________________________________________________________________________
Kolejny progress... Okazało się, że po implementacji kodu php do kodu html wystarczyło jeszcze do tego zamienić rozszerzenie (tego pliku html z wdrożonym skryptem php) z *.html na *.php i wszytko działa cacy smile.gif Tak zadaje te pytania i po jakimś czasie sam rozwiązuje te problemy i od razu wszystko tu piszę.. Ten temat zamienia się powoli w jakiś dziennik tworzenia strony tongue.gif Domyślam się, że irytują was moje błahe problemy i podstawowe pytania, no ale niestety jestem laik(A tym bardziej w php) smile.gif Kontynuując temat i moje ostatnie problemy, to wciąż mam problem z tym, aby w jakiś sposób ten kod wyciągnięty z tamtej strony nie szukał u mnie obrazków, lecz na własnej stronie. Myślałem o tym, by wziąć jakiegoś gotowca z net'a, który by ściągał automatycznie obrazki z tamtego serwera na mój serwer, ale niestety obciąża to trochę serwer i te gotowce, które znalazłem nie działały do końca tak jak powinny.
________________________________________________________________________________
Dobra, rozwiązałem swój ostatni problem używając preg_replace, także tamtejszy problem już jest nieaktualny(W między czasie miałem kolejny problem, ale nie chciało mi się pisać, bo byłem pewny, że raczej nikt mi z tym nie pomoże, więc nie marnowałem czasu pisząc tu), póki co to przerywam ten "dziennik".
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.