Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Skrapowanie obrazków
wiedzma92
post
Post #1





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

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


Witajcie! Próbuję stworzyć funkcję, która zwróci główne obrazki ze strony http://jbzd.pl. TYLKO główne obrazki, nie jakieś loga czy inne pierdoły. Niestety mój twór wywala kilka błędów. Zerknijcie, proszę, na te hieroglify i powiedzcie, co w nich nie gra.

  1. <?php
  2.  
  3. function getImages($url, $referrer)
  4. {
  5. $ch = curl_init($url);
  6.  
  7. if (curl_errno($ch))
  8. {
  9. echo 'Error ' . curl_errno($ch) . ': ' .curl_error($ch);
  10. }
  11.  
  12. curl_setopt($ch, CURLOPT_REFERER, $referrer);
  13.  
  14. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  15. curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3');
  16.  
  17. $content = curl_exec($ch);
  18.  
  19. $doc = new DOMDocument();
  20. $doc->loadHTML($content);
  21.  
  22. $xpath = new DOMXPath($doc);
  23. $images = $xpath->query('//span[@class = "image rolled"]/img');
  24.  
  25. return $images;
  26. }
  27.  
  28. echo getImages('http://jbzd.pl', 'http://localhost/img.php');
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
wiedzma92
post
Post #2





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

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


Miło mi to słyszeć (IMG:style_emoticons/default/happy.gif) Raz jeszcze, z całego serduszka, dziękuję za pomoc (IMG:style_emoticons/default/heart.gif)

Myślałam, że dalej dam sobie radę sama, ale za cienka jestem jeszcze w kodzie, by nie zadawać głupich pytań. Założyłam, że mój skrypt będzie sprawdzał, czy obrazek to .jpg czy nie, dlatego w wyrażeniu regularnym tylko .jpg uwzględniłam. Dodatkowo chciałabym, żeby mój skrypt pobrał wszystkie obrazki z 5 stron i zapisał je na dysku oraz informację, czy są jpg.

Wiem, że w poniższym kodzie jest bajzel i wszystko źle, ale uczę się dopiero i jeszcze błądzę, dlatego tak często szukam pomocy. Z góry bardzo dziękuję za rady, jak to ugryźć, żeby działało (IMG:style_emoticons/default/smile.gif)

  1. libxml_use_internal_errors(true);
  2.  
  3. function getImages($url, $referrer)
  4. {
  5. $ch = curl_init($url);
  6.  
  7. if (curl_errno($ch))
  8. {
  9. echo 'Error ' . curl_errno($ch) . ': ' .curl_error($ch);
  10. }
  11.  
  12. curl_setopt($ch, CURLOPT_REFERER, $referrer);
  13.  
  14. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  15. curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3');
  16.  
  17. $content = curl_exec($ch);
  18.  
  19. $doc = new DOMDocument();
  20. $doc->loadHTML($content);
  21.  
  22. $xpath = new DOMXPath($doc);
  23. $images = $xpath->query('//div[@class="image rolled"]/a/img[@src]');
  24.  
  25. foreach ($images as $image)
  26. {
  27. $src = $image->getAttribute('src');
  28.  
  29. preg_match('/.jpg$/', $src, $ext);
  30. $imagesInfo = ['src' => $src, 'ext' => $ext];
  31.  
  32.  
  33. print_r($imagesInfo);
  34. file_get_contents($src, set_include_path('/usr/downloads'));
  35. }
  36.  
  37. return $images;
  38. }
  39.  
  40. print_r(getImages('http://jbzd.pl', 'http://localhost/img.php'));


EDIT:

Już chyba wszystko ogarnęłam, poza jednym. Za nic nie potrafię stworzyć pętli, która będzie powtarzać wyżej wymienione operacje między stroną główną a piątą podstroną. Nie mam pojęcia, jak inkrementować adres… :/

Ten post edytował wiedzma92 15.07.2016, 15:48:45
Go to the top of the page
+Quote Post

Posty w temacie
- wiedzma92   [PHP] Skrapowanie obrazków   12.07.2016, 17:31:47
- - markuz   Podzielisz się z nami treścią tych błędów?   12.07.2016, 17:52:19
- - wiedzma92   Oczywiście, oto te straszydła: Warning: DOMDocume...   12.07.2016, 17:59:54
- - Pyton_000   Kod$content = file_get_contents('http...   12.07.2016, 18:19:16
- - wiedzma92   Poprawiłam mój kod. Chciałabym teraz, żeby powstał...   13.07.2016, 19:19:39
- - mlawnik   Funkcja substr($src, -3); Pobiera ostatnie 3...   13.07.2016, 21:00:03
|- - wiedzma92   Cytat(mlawnik @ 13.07.2016, 22:00:03 ...   13.07.2016, 21:16:38
- - mlawnik   Lepiej nie rozumieć i zapytać o wyjaśnienie niż ni...   14.07.2016, 06:13:32
- - wiedzma92   Dziękuję za wyjaśnienie i pomoc, Przyjacielu! ...   14.07.2016, 12:47:43
- - trueblue   [PHP] pobierz, plaintext $images = $xpath->quer...   14.07.2016, 13:09:22
- - wiedzma92   Niestety rezultat jest podobny do tego z mojego ko...   14.07.2016, 13:23:53
- - trueblue   Tyle, że tym zapytaniem nie zastąpisz tego o czym ...   14.07.2016, 13:28:25
- - wiedzma92   No, teraz wszystko pięknie śmiga. Dzięki za pomoc ...   14.07.2016, 13:49:06
- - mlawnik   Takim osobom jak ty przyjemnie się pomaga, dlatego...   14.07.2016, 17:18:48
- - wiedzma92   Miło mi to słyszeć Raz jeszcze, z całego serdus...   15.07.2016, 15:47:39
- - markuz   [PHP] pobierz, plaintext $pages = 5;for($p = 0...   15.07.2016, 16:27:46
- - wiedzma92   Niestety ten sposób nie działa, wywala mi milion w...   16.07.2016, 12:58:02
- - markuz   W funkcji file_get_contents musisz podać url obraz...   16.07.2016, 13:22:43
- - wiedzma92   Pozmieniałam to, oczym wspomniałeś. Teraz pojawia ...   16.07.2016, 13:33:11
- - markuz   Ok. A więc jeszcze raz, file_put_contents zapisuje...   16.07.2016, 13:49:35
- - markuz   Zamiast $ext wstaw (end(explode('.', ...   16.07.2016, 16:25:04
- - nospor   Na stronie na ktorej szukasz, wszystkie wszystkie ...   22.07.2016, 14:02:50
|- - wiedzma92   Cytat(nospor @ 22.07.2016, 15:02:50 )...   22.07.2016, 14:12:48
- - markuz   [PHP] pobierz, plaintext $con = file_get_contents...   22.07.2016, 14:28:48
- - wiedzma92   Pewnie robię coś źle, bo ściągają mi się same uszk...   22.07.2016, 14:45:52
- - markuz   Pokaż kod - będziemy wiedzieć w jaki sposób połącz...   22.07.2016, 15:15:52
- - markuz   Długa droga przed Tobą jeszcze, staraj się czytać ...   22.07.2016, 15:55:32
- - trueblue   Sprawdź co otrzymujesz po pobraniu atrybutu src.   29.07.2016, 18:11:49
- - markuz   Widzę, że szykuje się agregator "śmiesznych o...   29.07.2016, 18:50:16


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: 8.10.2025 - 08:13