Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Pobieranie opisów z filmweb
kuba_pilach
post
Post #1





Grupa: Zarejestrowani
Postów: 224
Pomógł: 3
Dołączył: 24.12.2010

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


Witam, znalazłem skrypt pobierania opisów z filmweb na:
http://forum.webhelp.pl/php-i-bazy-danych/...em-t224420.html

I jest to następujący kod:
  1. <?php
  2. $url = 'http://www.filmweb.pl/film/Punki+z+Salt+Lake+City-1998-39126';
  3. $useragent = 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.3) Gecko/20010801 ';
  4. $ch = curl_init($url); // zaladuje sie reklama i utworzy ciastko ze juz wysiwietlil tobie reklame
  5. curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
  6. curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookies.txt');
  7. curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookies.txt');
  8. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  9. $wynik = curl_exec($ch);
  10. curl_close($ch);
  11. // tutaj sie zaladuje poprawna strona
  12. $ch = curl_init($url);
  13. curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
  14. curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookies.txt');
  15. curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookies.txt');
  16. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  17. $wynik = curl_exec($ch);
  18. curl_close($ch);
  19.  
  20. preg_match( '#<span class="filmDescrBg">(.*?)</span>#', $wynik,$opis );
  21. echo $opis[0];
  22. ?>


I wyświetla następujący błąd:
Kod
Fatal error: Call to undefined function curl_init() in C:\serwer\apache\htdocs\filmy.php on line 5


Wiecie o co może chodzić?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
Magic WWW
post
Post #2





Grupa: Zarejestrowani
Postów: 123
Pomógł: 32
Dołączył: 9.09.2010
Skąd: Brzeg

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


Biblioteka cURL nie jest zainstalowana na twoim serwerze (IMG:style_emoticons/default/wink.gif)

Edit: jeśli korzystasz z XAMPP polecam małą lekturę:

http://www.tildemark.com/programming/php/e...windows-xp.html

Ten post edytował Magic WWW 9.04.2011, 09:17:18
Go to the top of the page
+Quote Post
kuba_pilach
post
Post #3





Grupa: Zarejestrowani
Postów: 224
Pomógł: 3
Dołączył: 24.12.2010

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


A więc usunąłem ";" przed danym extension w php.ini i zrestartowałem apacha...
A więc problem w tym, że teraz nic nie pokazuje... Wie ktoś w czym problem?
Podam jeszcze raz kod:
  1. <?php
  2. $url = 'http://www.filmweb.pl/film/Punki+z+Salt+Lake+City-1998-39126';
  3. $useragent = 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.3) Gecko/20010801 ';
  4. $ch = curl_init($url); // zaladuje sie reklama i utworzy ciastko ze juz wysiwietlil tobie reklame
  5. curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
  6. curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookies.txt');
  7. curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookies.txt');
  8. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  9. $wynik = curl_exec($ch);
  10. curl_close($ch);
  11. // tutaj sie zaladuje poprawna strona
  12. $ch = curl_init($url);
  13. curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
  14. curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookies.txt');
  15. curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookies.txt');
  16. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  17. $wynik = curl_exec($ch);
  18. curl_close($ch);
  19.  
  20. preg_match( '#<span class="filmDescrBg">(.*?)</span>#', $wynik,$opis );
  21. echo $opis[0];
  22. ?>


Ten post edytował kuba_pilach 9.04.2011, 09:56:40
Go to the top of the page
+Quote Post
Magic WWW
post
Post #4





Grupa: Zarejestrowani
Postów: 123
Pomógł: 32
Dołączył: 9.09.2010
Skąd: Brzeg

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


Pobieranie wyniku w pierwszym połączeniu jest bez sensu. Spróbuj podejrzeć przed preg_match jaki jest wynik. Jeśli jest w porządku to zrób coś takiego:
  1. echo '<pre>';
  2. var_dump($opis);
  3. echo '</pre>';
Go to the top of the page
+Quote Post
kuba_pilach
post
Post #5





Grupa: Zarejestrowani
Postów: 224
Pomógł: 3
Dołączył: 24.12.2010

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


Gdy zrobiłem:
  1. echo $wynik;


To wyświetliło mi całą stronę... Więc na końcu pliku przed znacznikiem ?>
Dałem to co napisałeś i wyświetliło:
Kod
array(0) {
}

Więc co gra?
Go to the top of the page
+Quote Post
Magic WWW
post
Post #6





Grupa: Zarejestrowani
Postów: 123
Pomógł: 32
Dołączył: 9.09.2010
Skąd: Brzeg

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


Czyli problem tkwi w funkcji preg_match, spróbuj zrobić to przez takie wyrażenie:
Kod
preg_match(#<span class="filmDescrBg"(.*?)>(.*?)</span>#si', $wynik, $opis);



Ten post edytował Magic WWW 9.04.2011, 10:59:59
Go to the top of the page
+Quote Post
kuba_pilach
post
Post #7





Grupa: Zarejestrowani
Postów: 224
Pomógł: 3
Dołączył: 24.12.2010

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


Już mi działa... Tako wygląda teraz mój plik:
  1. <?php
  2. ?>
  3. <html>
  4. <head>
  5. <meta http-equiv=content-language content=pl>
  6. <meta http-equiv=content-type content="text/html; charset=utf-8">
  7. </head>
  8. <body>
  9. <?php
  10.  
  11. //$url = 'http://www.filmweb.pl/film/Punki+z+Salt+Lake+City-1998-39126';
  12. $url = 'http://www.filmweb.pl/Shrek';
  13. $useragent = 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.3) Gecko/20010801 ';
  14. $ch = curl_init($url); // zaladuje sie reklama i utworzy ciastko ze juz wysiwietlil tobie reklame
  15. curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
  16. curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookies.txt');
  17. curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookies.txt');
  18. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  19. $wynik = curl_exec($ch);
  20. curl_close($ch);
  21. // tutaj sie zaladuje poprawna strona
  22. $ch = curl_init($url);
  23. curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
  24. curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookies.txt');
  25. curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookies.txt');
  26. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  27. $wynik = curl_exec($ch);
  28. curl_close($ch);
  29. preg_match( '#<span class=filmDescrBg property=(.*?)>(.*?)</span>#',$wynik,$opis);
  30. preg_match('#<th>scenariusz:</th><(.*?)>(.*?)</(.*?)>#',$wynik,$scenariusz);
  31. preg_match('#<div class=basic-info-wrapper><table><tr><th>reżyseria:</th><td><a href=(.*?) title=(.*?) rel=(.*?)>(.*?)</a></td></tr><tr><th>scenariusz:</th><td><a href=(.*?) title=(.*?)>(.*?)</a></td></tr>#',$wynik,$info);
  32. preg_match('#<tr><th>premiera:</th><td><span>(.*?)</span>(.*?)<span id=filmPremiereWorld style=(.*?)>(.*?)</span></td></tr><tr><th>produkcja:</th><td><a href=(.*?)>(.*?)</a></td></tr><tr><th>gatunek:</th><td><a href=(.*?)>(.*?)</a>, <a href=(.*?)>(.*?)</a></td></tr></table>#',$wynik,$infodwa);
  33. preg_match('#<div class=posterLightbox><a rel=(.*?) href=(.*?) class=film_mini><img src=(.*?) alt=(.*?) title=(.*?)>#',$wynik,$obrazek);
  34. $info = str_replace("href", "", $info[0]);
  35. $infodwa = str_replace("href", "", $infodwa[0]);
  36. $obrazek = str_replace("href", "", $obrazek[0]);
  37. ?>
  38. <center>
  39. <?php
  40. echo $obrazek;
  41. ?>
  42. </div>
  43. <?php
  44. echo $info;
  45. ?>
  46. <table>
  47. <?php
  48. echo $infodwa;
  49. ?>
  50. </table>
  51. <table>
  52. <tr>
  53. <td width="400">
  54. <?php
  55. echo $opis[0];
  56. ?>
  57. </td>
  58. </tr>
  59. </table>
  60. </center>
  61. </body>
  62. </head>


I działa, pobiera dla danego linku info... Teraz mam do was prośbę i pytanie w jednym...
Chciałbym zrobić domową bazę filmową tzn. będzie się dodawało filmy, które mamy i skrypt ma pobierać dane z filmwebu i je wpisać do bazy...
Ale linki różnie wyglądają, naprzykład:
http://www.filmweb.pl/Shrek

Lecz są i takie:
http://www.filmweb.pl/2.Shrek

A więc moje pytanie: macie jakieś pomysły, by jakoś to ogarnąć?
Dzięki z góry

Odświeżam... Wie ktoś jak rozwiązać ten problem?
Go to the top of the page
+Quote Post
potreb
post
Post #8





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

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


Kiedyś robiłem sobie skrypt do katalogowanie filmów. W załączeniu do ściągnięcia: http://www.sendspace.pl/file/03f4e0924fde811ba87ce0f
Go to the top of the page
+Quote Post
wNogachSpisz
post
Post #9





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


Zamiast CURL użyj PEAR:HTTP_Request
Zamiast preg_match() użyj PHP:DOM
Go to the top of the page
+Quote Post
kuba_pilach
post
Post #10





Grupa: Zarejestrowani
Postów: 224
Pomógł: 3
Dołączył: 24.12.2010

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


A powiesz, gdzie i jak się tego używa?
A i nie które adresy wyglądają tak:
www.filmweb.pl/Shrek.Trzeci

I to właśnie mnie wkurza. Że nie potrafię zrobić tak, by za każdym razem pobierał dobre dane z filmwebu...
Czekam na odpowiedź i dzięki z góry

Próbuję, ale nadal nic :/
Pomocy!!! Dajcie mi jakiś przykład korzystania z tych sposobów
Go to the top of the page
+Quote Post
soska66
post
Post #11





Grupa: Zarejestrowani
Postów: 132
Pomógł: 1
Dołączył: 3.02.2005

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


Moze czegos nie wiem albo nigdy nie mialem przyjemnosci spotkac sie z rozwiazaniem takiego problemu, ale wg mnie bezposrednio i automatycznie sie tego zrobic nie da. Musialbys podawac jako parametr do twojego kodu dokladne ID filmu, czyli w przypadku tych odnosnikow 2.Shrek albo Shrek.Trzeci.

No bo jak inaczej? Wywolywac wyszukiwanie i parsowac pierwszy wynik? (zakladajac, ze pierwszy wynik to wlasnie ten wlasciwy - malo to filmow o tych samym tytulach)

Ten post edytował soska66 12.04.2011, 19:45:46
Go to the top of the page
+Quote Post
kuba_pilach
post
Post #12





Grupa: Zarejestrowani
Postów: 224
Pomógł: 3
Dołączył: 24.12.2010

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


Odświeżam staaaary temat... Wie ktoś może, jak to zrobić?
Również dobrze mógłbym sprawdzać czy dana nazwa jest true itd...
Ale chyba to nie wyjdzie...
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.12.2025 - 19:07