Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Pobieranie linku do pliku cURL
Forum PHP.pl > Forum > PHP
Maniek1313
Witam mam pytanie czy da radę w php stworzyć skrypt który po wpisaniu linku strony i oczywiście wysłania formularza pobrało mi kod html diva ze strony którą podałem w inpucie i potem wyświetlenia tego diva u mnie na stronie questionmark.gifquestionmark.gif
nospor
Da się.

Sam w tytule napisałeś cURL. Czego więc nie wiesz?
Maniek1313
Znalazłem w necie taki kod

  1. <?php
  2.  
  3. $curl = curl_init("tutaj adres strony");
  4.  
  5. curl_setopt($curl, CURLOPT_URL, "tutaj adres strony");
  6. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  7. curl_setopt($curl, CURLOPT_USERAGENT, 'TEST');
  8. curl_setopt($curl, CURLOPT_TIMEOUT, 60);
  9. curl_setopt($curl, CURLOPT_HEADER, 0);
  10.  
  11. $body = curl_exec($curl);
  12.  
  13. curl_close($curl);
  14.  
  15.  
  16. $file = "baza.txt";
  17. $fp = fopen($file, "a");
  18. flock($fp, 2);
  19. fwrite($fp, $body);
  20. flock($fp, 3);
  21. fclose($fp);
  22.  
  23. ?>


i pobiera mi całą stronę a nie wiem jak zrobić żeby mi pobrał tylko jeden div przypuśćmy o id="nowydiv".
by_ikar
Będzie ci zawsze pobierał całą stronę. Tą stronę którą pobierasz to wyłuskujesz sobie z niej to czego ci potrzeba. Na conajmniej kilka sposobów. W DOM, jakimiś wyrażeniami regularnymi i tym podobne. Osobiście do takich celów używam phpQuery, taka fajna klasa w stylu jQuery i samo poruszanie się po DOM sprowadza się przeważnie do 1 linijki wink.gif
Maniek1313
a mógłbyś dodać jakiś przykład użycia tego phpQuery questionmark.gif
by_ikar
Kod
require './phpQuery/phpQuery.php';

$curl = curl_init("tutaj adres strony");

curl_setopt($curl, CURLOPT_URL, "tutaj adres strony");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_USERAGENT, 'TEST');
curl_setopt($curl, CURLOPT_TIMEOUT, 60);
curl_setopt($curl, CURLOPT_HEADER, 0);

$body = curl_exec($curl);

curl_close($curl);

phpQuery::newDocument($body);

echo pq('#nowydiv')->html();


Generalnie masz w tym phpQuery sporo przykładów, zarówno na stronie phpQuery: http://code.google.com/p/phpquery/ jak i w przykładach które pobierasz wraz z klasą, jak i na sporej ilości stron w sieci.
Maniek1313
ok dzięki już mam tylko że jest jeszcze jeden problem zrobiłem tak :

  1. <?php
  2.  
  3. require './phpQuery/phpQuery.php';
  4.  
  5. $curl = curl_init("link do strony");
  6.  
  7. curl_setopt($curl, CURLOPT_URL, "link do strony");
  8. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  9. curl_setopt($curl, CURLOPT_USERAGENT, 'TEST');
  10. curl_setopt($curl, CURLOPT_TIMEOUT, 60);
  11. curl_setopt($curl, CURLOPT_HEADER, 0);
  12.  
  13. $body = curl_exec($curl);
  14.  
  15. curl_close($curl);
  16.  
  17. phpQuery::newDocument($body);
  18.  
  19. echo pq('#dl')->html();
  20.  
  21.  
  22. $file = "baza.txt";
  23. $fp = fopen($file, "a");
  24. flock($fp, 2);
  25. fwrite($fp, $body);
  26. flock($fp, 3);
  27. fclose($fp);
  28.  
  29. ?>


i na stronie pojawia się zamist
  1. <a id="dl" href="tutaj strona"><img src="obrazek.jpg"></a>


to wyświetla się taki kod

  1. <img src="obrazek.jpg">


gorden
a nie lepiej file_get_contents i preg_match? nie trzeba do tego curla, cała filozofia
Maniek1313
ok a mam pytanie bo link dostaje w postaci /plik/1.rar a chciałbym żeby było http://www.strona.pl/plik/1.rar więc jak to dodać questionmark.gif
by_ikar
No jeżeli wiesz z jakiej strony ten link masz, to co za problem jeszcze raz użyć tego linka?
Maniek1313
no tak ale jak mi pobiera cały kod <a href="/plik/1.rar"></a> to jak dołączyć żeby było <a href="http://www.strona.pl/plik/1.rar"></a>
gorden
wyrażeniem regularnym pobierasz hrefa, zmieniasz na link i ponownie dodajesz w <a>
Maniek1313
nie rozumię
Maniek1313
ale mi się rozchodzi o to że nie wiem jak pobrać tylko kawałek strony ten który potrzebuje
gorden
to co wcześniej napisałem, tylko bez ostatniego słowa. do pobrania strony do zmiennej użyj file_get_contents(url)
Maniek1313
a byś wstawił przykład z użyciem file_get_contents(url) jak pobrać dany fragment strony np. sam <a href="tutajadres" id="new">blabla</a>
gorden
  1. preg_match('wyrazenie', file_get_contents('link'), $result);
wyrażenie sam sobie znajdź, chociażby w linku, który Ci dałem. więcej Ci nie pomogę w tej sprawie. wierze w Ciebie!
Maniek1313
Zrobiłem takie coś tylko że coś jest nie tak z funkcją preg_replace nie wiem jak ułożyć 3 argument.

Oto kod :

  1. <?php
  2. $pobierz = file_get_contents('http://przykladowastrona');
  3. $dane = preg_replace ('!<a id="new" href="#">(.*)!</a>',$pobierz);
  4. print_r($dane);
  5. ?>



Jedyne co będzie się zmieniać w tym to href="tutaj"
by_ikar
Widzę nigdy nie bawiłeś się jquery a selektory z css są ci zupełnie obce. Dałem ci narzędzie, którym możesz wyciągnąć co chcesz i w sumie głównie musisz wiedzieć na jakiej zasadzie "działają" selektory w css..

  1. require './phpQuery/phpQuery.php';
  2.  
  3. $strona = file_get_contents('http://przykladowastrona');
  4.  
  5. phpQuery::newDocument($body);
  6.  
  7. $link = pq('a#new')->attr('href');
  8.  
  9. echo $link;


Pod zmienną $link znajduje się twój adres. W ogóle zajrzałeś na przykłady podane w phpQuery? Trzeba było się tym bardziej zainteresować, bo biblioteka jest na prawdę genialna.
Maniek1313
już zrobiłem ale na innej zasadzie fragment strony pobrałem za pomocą preg_match i potem za pomocą js przypisałem link do pola id
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.