2011年1月26日 星期三

Google Image Search自己弄api



最近常被企劃問到可不可以直接在活動網站上直接Google圖片,然後拿那些圖片來玩耍。
我想應該就是前一陣子一個日本網站害的,所以搔搔頭說聲我不確定我study一下,就上google code上面去翻。結果當然是沒有提供這個服務。
所以我想了一下,這功能大概又是要土法練鋼了…。


基本上原則就是直接去解析Google圖片搜尋頁的結果頁。
如果我們搜尋的關鍵字是「這是什麼鬼」,那Google搜尋頁的實際網址會是:
http://www.google.com.tw/images?hl=zh-TW&source=imghp&biw=1440&bih=787&q=這是什麼鬼&gbv=2&aq=f&aqi=&aql=&oq=

其中hl很明顯是語系,q也很明顯就是關鍵字。語系可有可無,其它變數仍未明也就不管它,所以直接把上面那個網址簡化成這樣試試:
http://www.google.com.tw/images?q=這是什麼鬼

跑出來的結果差不多,那就先醬吧,其它的變數有空再研究。


接下來就是分析頁面的原始頁面了。
Google所搜尋出來的圖,都是以以下這種格式的方式存在於html裡的:
<a href=/imgres?imgurl=aaaa><img src=bbbb width=ccc height=ddd style="border:1px solid #ccc;padding:1px">
其中imgurl應該是此圖的原始位置,後面bbb的src則應該是Google快取下來的位置,ccc及ddd則顧名思義是寬高囉。
通常imgurl這個網址直接連的話很多圖都早就掛了,所以要安全一點還是取用src就好。
因此只要掃過整個html頁面把符合以上條件規格的tag全抓出來就可以找到需要的圖了。

我這邊寫了一個flash版本的,有興趣的可以下載回去。但是只能在本機跑喔!因為讀取google這個網域是跨網域了,所以不能在web上跑。如果要把這東西用在網站上的話,就依照同樣原則請server端那邊去把Google那邊的圖幹回來就可以了。點此下載

補充:
1.    我這樣抓的資料一頁是20筆,似乎跟Google網頁上呈現的有一點點不太一樣,還不知道為什麼。(也不會想去找出原因吧XD)
2.    要跳頁可以,有個變數好像叫start,可以指定要從第幾個開始顯示。
3.    其它似乎還有很多變數,但我沒再繼續深入了…。

2 則留言:

  1. 不知道這種直接在活動裡面玩google搜來的圖片會不會有侵權的困擾呢?

    回覆刪除
  2. 我覺得應該會有,但真要追咎的話很難,而且日本人都大辣辣的這樣玩了,除非是遇到很敏感的圖片就是了...

    回覆刪除