Yahoo! Search API
Yahoo! Search API
Miután Polaa belevetette magát a Google API rejtelmeibe, gondoltam megnézem, hogy a konkurens keresővállalatnál mi a helyzet ilyen téren. Természetesen létezik Yahoo! API is. Természetesen arra ne is gondoljunk, hogy a Google által használt megoldást valósították meg Ők is. Miért is tették volna? Tehát az előzőekben átnézett, megszeretett SOAP kódunkat a Yahoo! esetében dobhatjuk a kukába. No de nézzük mire is lesz szükségünk.
Először is, vadásznunk kell magunknak egy application id-t, amit majd minden kéréshez hozzá kell csatolnunk. Ehhez szükségünk lesz egy Yahoo! ID-re is, mert akkor már ugye növeljük a Yahoo! felhasználók táborát. Ha minden megvan, akkor igazából készen is vagyunk és kezdhetünk kódot írni. A kódoláshoz használtam a cURL kiterjesztést, mivel ez nagyban megkönnyíti a dolgunkat, de használhatnánk file_get_contents()
függvényt, ha engedélyezve van a php.ini-ben az allow_url_fopen vagy pedig használhatjuk az fsockopen()
függvényt is, ha lehetőségünk van rá.
No, csapjunk a lecsóba, nézzünk egy kis kódot, amivel megkaphatjuk egy keresés eredményét XML formátumban:
header('Content-Type: text/xml');
$app_id = 'ide jön az application id';
$service = array(
'image' => 'http://api.search.yahoo.com/ImageSearchService/V1/imageSearch',
'local' => 'http://api.local.yahoo.com/LocalSearchService/V1/localSearch',
'news' => 'http://api.search.yahoo.com/NewsSearchService/V1/newsSearch',
'video' => 'http://api.search.yahoo.com/VideoSearchService/V1/videoSearch',
'web' => 'http://api.search.yahoo.com/WebSearchService/V1/webSearch'
);
$conn = curl_init($service['web'].'?appid='.$app_id.'&query=deadlime');
curl_setopt($conn, CURLOPT_HEADER, false);
curl_setopt($conn, CURLOPT_RETURNTRANSFER, true);
$xml = curl_exec($conn);
curl_close($conn);
echo $xml;
Mint az látszik, van egy $service tömb, amiben tároljuk a Yahoo! egyes API-jainak az elérési útját. Tulajdonképpen mindenféle PHP nélkül a böngészőben is játszhatnánk ezzel, hogy beírjuk címnek az egyik szolgáltatást és a következő GET paraméterekkel bővítjük a lekérdezést:
- appid
- Az application id, amit kaptál.
- query
- A lekérés szövege, érdemes lefuttatni rajta egy urlencode() vagy rawurlencode() függvényt.
- zip
- Zipcode, csak a Local Search szolgáltatásnál használható.
- start
- Ezzel lehet megadni, hogy hányadik elemtől mutassa a találatokat.
Nincs más hátra, mint kinyerni az adatokat a kapott XML fájlból, aminek a formátuma a $service['web'] esetén (ezt használtuk a fentebbi PHP példában) a következő:
<ResultSet xsi:schemaLocation="urn:yahoo:srch http://api.search.yahoo.com/WebSearchService/V1/WebSearchResponse.xsd" totalResultsAvailable="" totalResultsReturned="" firstResultPosition="">
<Result>
<Title></Title>
<Summary></Summary>
<Url></Url>
<ClickUrl></ClickUrl>
<ModificationDate></ModificationDate>
<MimeType></MimeType>
<Cache>
<Url></Url>
<Size></Size>
</Cache>
</Result>
</ResultSet>
Nagyjából ennyi lenne a dolog. Mint az jól látszik, nem annyira testreszabható, mint a Google által kínált felület, viszont próbára tehetjük vele az XML értelmezési tudásunkat... :)