2012-02-08 9 views
5

Krótko mówiąc, szukam sposobu, aby to zrobić:Czy przeczytać wyniki wyszukiwania Google w tablicy PHP?

$results_array = google("search terms"); // returns array of URLs 

Tak więc, na przykład, jeśli moje wyszukiwane hasła były "filmy cat" my $ results_array [0] może być URL Youtube, i $ result_array 1 może być na Vimeo.

Widziałem interfejs API wyszukiwarki niestandardowej Google, ale wszystkie one wymagają złożonych transformacji JSON, ATOM, REST lub jakiegoś innego systemu, który jest zbyt skomplikowany dla tego, co próbuję zrobić.

Czy istnieją jakieś proste rozwiązania?

EDIT: Znalazłem go, dzięki innym poście

Dzięki this post byłem w stanie zrozumieć. W skrócie, po prostu stosuje się następującą:

$results = json_decode(file_get_contents( 
      'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q='. 
      urlencode($search))); 

echo $results->responseData->results[$resultNumber]->url; 

Jestem nieco zaskoczony i rozczarowany przez downvotes - wydaje się być dość częste pytanie o istocie dość prosta odpowiedź. Dotyczy to JSON, ale jest całkowicie przezroczysty dla użytkownika. Być może lepszym rozwiązaniem będzie:

function google($query) { 
    $results = json_decode(file_get_contents( 
      'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q='. 
      urlencode($search))); 

    return $results->responseData->results 
} 
+4

W jaki sposób JSON jest zbyt skomplikowany? Wygląda na to, że jest to pierwszy wybór do twojej realizacji. Zdecydowanie mniej skomplikowane niż coś takiego jak parsowanie wyników wyszukiwania HTML ... –

+2

Google nie lubi niczego, co próbuje ominąć ich api, więc jeśli spróbujesz zrobić bezpośrednie żądania i przeanalizować wyniki - Twój host może zostać zbanowany. – Cheery

Odpowiedz

3

Jeśli chcesz uzyskać wyniki wideo, możesz spróbować.

//replace space between words with + 
$query = "cat+video"; 
$start = 0; 
/* 
this url will give you json response with 4 results each time. 
u have to change the $start like 0, 4, 8,... 
use json_decode() and get it in array 
*/ 

$url = 'https://ajax.googleapis.com/ajax/services/search/video?v=1.0&q='.$query.'&start='.$start 

nadzieję, że będzie to pomocne.

Powiązane problemy