Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyszukiwarka i cURL
Forum PHP.pl > Forum > PHP
grzes999
Witam

Zacząłem pisać wyszukiwarkę, która będzie szukać na innej stronie.
Poprzeglądałem trochę forum i dowiedziałem się, że muszę użyć funkcji cURL.
Napisałem fragment kodu z pomocą tego artykułu >>>LINK<<<
Oto mój kod pisana na szybko.

  1. <?php
  2. $slowo=trim($_POST['fraza']);
  3. $zmienna=curl_init('http://darkwarez.pl/forum/filmy/');
  4. curl_setopt=($zmienna,CURLOPT_SLOWO,$slowo); //Tutaj wywala mi błąd
  5. curl_exec($zmienna);
  6. foreach ($zmienna as $wynik){
  7. echo $wynik."<br>";
  8. }
  9. curl_close($zmienna);
  10. ?>

Ogólnie to nie za bardzo wiem gdzie do tej funkcji wstawić wpisywane w formularzu szukane słowo i stronę na której chcę szukać.
Bardzo proszę o jakieś wskazówki i porady.
muk4
Żeby szukać na forum trzeba być zalogowanym, więc najpierw musiałbyś się zalogować na forum przez CURLa.

btw. co to jest CURLOPT_SLOWO ?
foxbond
Lepiej dokładniej przeczytaj ten rozdział
grzes999
muk4 to jest rezultat złego zrozumienia.

Przeczytałem jeszcze raz artykuł. No i teraz nie mam żadnych błędów tylko niestety zamiast rezultatów szukania wyświetla mi stronę google.

Oto zmieniony kod

  1. <?php
  2. $slowo=trim($_GET['fraza']);
  3. $zmienna=curl_init();
  4. $strona= "http://www.google.pl/webhp?";
  5. curl_setopt($zmienna, CURLOPT_URL,$strona);
  6. curl_setopt($zmienna,CURLOPT_GETFIELDS,$slowo);
  7. echo curl_exec($zmienna);
  8. curl_close($zmienna);
  9. ?>


I wyświetla się stosowny warning
Invalid curl configuration option in szukaj.php on line 6
Fifi209
Polecam:
Curl

To tak, aby się zalogować najczęściej potrzeba:
CURLOPT_POST
CURLOPT_POSTFIELDS
CURLOPT_FOLLOWLOCATION
CURLOPT_COOKIEJAR
CURLOPT_COOKIEFILE

Czasem trzeba dorzucić user agenta
CURLOPT_USERAGENT

Dalej, warto używać:
CURLOPT_RETURNTRANSFER

i to chyba tyle co będzie potrzebne
grzes999
Męczę się z tym i nic mi nie wychodzi. Dodam tylko, że na początek chce zrobić wyszukiwanie np. w google.
Może ktoś powie co zrobić żeby wyświetlały się rezultaty wyszukiwania a nie strona główna googli.
Fifi209
Pokaż kod, który spłodziłeś.
grzes999
  1. <?php
  2. $szukaj=$_GET['fraza'];
  3. $zmienna = curl_init('http://www.google.pl');
  4. curl_setopt($zmienna, CURLOPT_GET, 1);
  5. curl_setopt($zmienna, CURLOPT_GETFIELDS, $szukaj); //wypelnia pola
  6. curl_setopt($zmienna, CURLOPT_RETURNTRANSFER, 1);
  7. echo curl_exec($zmienna);
  8. curl_close($zmienna);
  9. ?>


I przy wpisaniu zamiast GET POST gogle wyświetla taki bład:

405. That’s an error.

The request method POST is inappropriate for the URL /. That’s all we know.
reptilerex
Nie da rady bezpośrednio w curlu wyszukać interesujących cię danych.
Poczytaj o wyrażeniach regularnych w PHP
grzes999
Cytat(reptilerex @ 10.07.2011, 13:44:05 ) *
Nie da rady bezpośrednio w curlu wyszukać interesujących cię danych.
Poczytaj o wyrażeniach regularnych w PHP


Czyli zamiast szukać danego słowa powinienem szukać ciągu znaków zawierającego szukane słowo??
Dobrze rozumiem?
muk4
  1. <?php
  2. $szukaj=urlencode($_GET['fraza']);
  3.  
  4. $zmienna = curl_init('http://www.google.pl/search?q=' . $szukaj);
  5. curl_setopt($zmienna, CURLOPT_RETURNTRANSFER, 1);
  6. echo curl_exec($zmienna);
  7. curl_close($zmienna);
  8. ?>


Nie ma takiej opcji jak CURLOPT_GET i CURLOPT_GETFIELDS. Zobacz jak działa wyszukiwarka. To co wpiszesz jest przekazywane przez URL w zmiennej 'q'. Musisz dodatkowo enkodować zapytanie żeby dobrze obsłużyć np. spacje (w adresie nie może być spacja).

@DOWN
Google wysyła dane przez GET (?)

#EDIT
To raczej nie było pytanie ^^
grzes999
Dziękuję wszystkim zainteresowanym tematem za pomoc. Teraz biorę się za logowanie i szukanie na forum wink.gif


No i znowu napotkałem się na problem. Przejrzałem już forum i google; ale nie wiele mi to pomogło.Bo niby skrypt jest dobrze napisany tylko nie mogę się zalogować.Wyświetla mi tylko, że zostałem wyrzucony z forum. Oto mój kod:

  1. function loguj($login, $password){
  2. $cookie = "ciastka.txt";
  3. $curl = curl_init("http://www.darkwarez.pl/forum/login.php");
  4. curl_setopt($curl, CURLOPT_REFERER, "http://www.darkwarez.pl/forum/")
  5. curl_setopt($curl, CURLOPT_HEADER, 1);
  6. curl_setopt($curl, CURLOPT_POST, true);
  7. curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  8. //curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
  9. curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
  10. curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie);
  11. curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie);
  12. curl_setopt($curl, CURLOPT_POSTFIELDS, $login);
  13. curl_setopt($curl, CURLOPT_POSTFIELDS, $password);
  14. $result = curl_exec($curl);
  15. curl_close ($curl);
  16. return $result;
  17. }
  18. $z = loguj("login", "haslo");
  19. echo $z;


I mam jeszcze jedno pytanie odnośnie pierwszego problemu. Czy da się zrobić, żeby wyświetlały mi się tylko wyniki wyszukiwania; a nie cała strona. Jeśli tak to jak się za to zabrac??
muk4
Zabierając się się za takie coś musisz najpierw wiedzieć jak wyglądają dane POST wysyłane do skryptu.
Załatw sobie Firefoxa i dodatek LiveHTTPheaders, zobacz jakie dane wysyłasz.

Dokładnie takie:
Cytat
usrname=<login>&passwrd=<haslo>&redirect=&login=Zaloguj


Cytat
Czy da się zrobić, żeby wyświetlały mi się tylko wyniki wyszukiwania; a nie cała strona. Jeśli tak to jak się za to zabrac??

Albo wyrażeniami regularnymi wyciągać linki albo przez DOMDocument.
grzes999
Cytat(muk4 @ 13.07.2011, 22:03:59 ) *
Załatw sobie Firefoxa i dodatek LiveHTTPheaders, zobacz jakie dane wysyłasz.


No i co mam z taką wiedzą zrobić.Próbowałem wstawić to do adresu i jeśli robię to sam to wyskakuje błąd, że użyto niepoprawnych danych; a jeżeli za pomocą PHP to ten sam komunikat co dotychczas czyli zostałeś wyrzucony...
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.