Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Poruszanie się po stronie, cURL
D3vilroot
post
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 5.08.2006

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


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 (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

Ten post edytował D3vilroot 30.08.2006, 14:26:21
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
naox
post
Post #2





Grupa: Zarejestrowani
Postów: 29
Pomógł: 1
Dołączył: 5.07.2005

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


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 (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif)

Ten post edytował naox 3.09.2006, 01:21:16
Go to the top of the page
+Quote Post
Balon
post
Post #3





Grupa: Zarejestrowani
Postów: 422
Pomógł: 0
Dołączył: 14.12.2005
Skąd: Wałbrzych

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


  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. ?>
Go to the top of the page
+Quote Post

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 - 09:02