Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Poruszanie się po stronie
Forum PHP.pl > Forum > PHP
D3vilroot
Sprawa przedstawia się tak:
Za pomocą cURL chce "wejść" na daną stronę. Następnie przeszukać ją w poszukiwaniu danego słowa np. php
Chce też żeby to słowo było wyświetlane na tej słowie jako url tj.

  1. <a href="1234.php">php</a>


Jak mój skrypt znajdzie coś takiego jak wyżej to wchodzi w ten link i tam wykonuje jeszcze inne operaje.
Tylko nie wysyłajcie mnie do manula bo się go oczytałem sporo i przykładów też.

Wiem o istnieniu funkcji preg_match i preg_match_all, ale nie umiem posługiwać się tymi dziwnymi znaczkami to znalezienia czegoś np.
  1. <?php
  2. $preg ="/a[s]+[^>]*?href[s]?=[s"']+(.*?)["']+.*?>([^<]+|.*?)?</a>/";
  3. preg_match(trim($preg), "$data", $matches);

Tak narazie wygląda moj program. Czyli nic wielkiego
  1. <?php
  2. $strona = "http://strona.pl/";
  3.  
  4. $ch = curl_init();
  5. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  6. curl_setopt($ch, CURLOPT_URL,"$strona");
  7. curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6');
  8. $headers = array('Accept-Language: pl,en-us;q=0.7,en;q=0.3',
  9.  'Accept-Charset: ISO-8859-2,utf-8;q=0.7,*;q=0.7',
  10.  'Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5');
  11. curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
  12.  
  13. //send referer page
  14. curl_setopt($ch, CURLOPT_REFERER, 'http://google.pl');
  15.  
  16. // gzip, deflate
  17. curl_setopt($ch, CURLOPT_ENCODING, '');
  18.  
  19. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  20.  
  21. //cookies
  22. curl_setopt($ch, CURLOPT_COOKIEJAR, "my_cookies.txt"); //initiates cookie file if needed
  23. curl_setopt($ch, CURLOPT_COOKIEFILE, "my_cookies.txt"); // Uses cookies from previous session if exist
  24.  
  25. //post
  26. curl_setopt($ch, CURLOPT_POST, 1);
  27. curl_setopt($ch, CURLOPT_POSTFIELDS,
  28. "");
  29. $data = curl_exec($ch);
  30. curl_close ($ch); 
  31. ?>


Przepraszam, że odświeżam temat, ale czegoś sie dopracowałem więc może więcej mi pomożecie.
  1. <?php
  2. //znajduje ciąg z adresem
  3. $urlpattern = '/<a[^>]+href="([^"]+)/i';
  4. preg_match_all($urlpattern, $data, $matches);
  5. printf("Ilosc linkow: %d<P>", sizeof($matches[1]));
  6. foreach ($matches[1] as $u) {
  7.  echo $u."<br/>";
  8. }
  9.  
  10. ?>

Ten kod znajduje mi wszystkie url na stronie a bez odnośników tzn. znajduje to
  1. http://jakas.strona.pl

A ja musze mieć
  1. <a href="http://jakas.strona.pl">Tu opis</a>


Proszę pomóżcie. Buduje coś w rodzaju prostego webspider'a.
A może znacie jekieś gotowe proste skrypty sad.gif
naox
odpowiadam, bo nikt inny nie odpowiedział. sam tez nie znam sie na regexp dobrze wiec stosuje ciagle funkcje explode. dosyc to pewnie nie profesjonalne ale wszystko w koncu da sie zrobic tak. Możesz rozbić kod html całej strony uzywajac '<a href="' a pozniej z kazdym rozbitych elementów jeszcze rozbić przy </a> czy "
no ale jesli szukasz profesjonalnego rozwiazania to sie nie słuchaj snitch.gif
Balon
  1. <?php
  2. $urlpattern = '/<a[^>]+href="([^"]+)/i';
  3. ?>

a gdzie tutaj pobierasz zawartosc <a></a> ?
ja bym to napisal tak
  1. <?php
  2. $urlpattern = '!<a[^>]+href="(.*?)">(.*?)</a>!i';
  3. ?>
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.