2011-10-27 33 views
14

如何獲取Google搜索結果中頁面網址的絕對URI或base64編碼列表?Google網頁縮略圖絕對URI

目標:

通過URL陣列迭代:

pages["pinelakedesign.com"]; 
pages["pinelakedesign.com/about"]; 
pages["pinelakedesign.com/contact"]; 

輸出:

  • 谷歌縮略圖1
  • 谷歌縮略圖2
  • 谷歌縮略圖Ñ

Google使用縮略圖JPG圖像的base64字符串編碼作爲其視覺搜索結果。 2011年該縮略服務從以前的系統改變在這一問題中描述的放大鏡和絕對URI建設: https://stackoverflow.com/questions/6881319/google-web-thumbnails

我只想瓦出一個網站,如谷歌縮略圖,所以我知道該頁面的列表哪些頁面一目瞭然,縮略圖以及這些大拇指都是什麼樣子。

Google search results thumbnail preview

編輯2011年11月5日

我確定了這個URL調用返回JSONP用base64編碼,谷歌搜索結果的標題,描述和URL。

https://clients1.google.com/webpagethumbnail?r=4&f=3&s=400:585&query=pine+lake+design&hl=en&gl=us&c=29&d=http%3A%2F%2Fwww.pinelakedesign.com%2F&b=1&j=google.nyc.c.j_pVK1Tu_gAbODsAKH0ZTuAw_3787232970_3&expi=17291,27615,28936,30049,30316,31215,32035,32271,32410,32940,33104,33194,33627,33788,33854,33907,33975,34103&a=2NT 

query =參數是在Google中搜索到的內容。 d =是鏈接的目的地,並且可能是縮略圖的來源。 s = 400:585是高度和寬度。我不確定r = 4和f = 3是做什麼的。修改這些變量中的任何一個都會導致404錯誤。我的直覺是expi =是基於不同參數值的某種校驗和失效算法,但我不知道。

返回的JSONP:

google.nyc.c.j_pVK1Tu_gAbODsAKH0ZTuAw_3787232970_3({"s":"b","b":1,"quality":100,"shards":[{"heights":[300,131],"imgs":["data:image/jpeg;base64,/9j/4AAQSkZ ...THIS IS THE LONG BASE64 ENCONDING ...pa5r61f/9k="],"tbts":[{"box":{"h":15,"l":0,"t":39,"w":224},"txt":"<em>Pine Lake</em> specializes in small business website <em>design</em>, redesign and hosting. We have developed the Sungem content management system which allows our <b>...</b>","txtBox":{"h":57,"l":0,"t":58,"w":400}}]}],"url":"http://www.pinelakedesign.com/"} 
) 

更新2011年11月8日

我正在尋找像emedly's Preview觀看谷歌縮略圖一些解決方案。

更新2012年2月9日

使用虛擬JS看起來像一個很好的方式來實現服務器端的遠程快照,但它並不能幫助確定如何在谷歌的圖像得到。

更新2012年3月26日

我相信谷歌的搜索蜘蛛的桌面版Chrome的運行1,024像素寬分辨率無頭版本。Chrome spider可以讓蜘蛛執行Javascript,使用@ font-face,CSS3選擇器,查看Flash(甚至等待預加載器達到100%),並在加載完所有資源和DOM操作後獲取準確的渲染頁面快照。請Google的任何人請權衡以確認或否認任何內容?

+1

實際上,您可以完全刪除expi參數。您也可以刪除b和j參數。它看起來像一個參數是一個校驗和,因爲它是唯一不同的請求到下一個。不知道一種方法來輕鬆確定一個值。 – Todd

+0

剛剛注意到j是JSONP回調包裝器。 @Todd,當我嘗試刪除j,b或expi時,我在Chrome中獲得了404。您是否在地址欄或javascript中發送請求? –

+0

在地址欄中..也許Cookie也起作用? – Todd

回答

8

基本上,他們首先對查詢url進行curl請求,然後從html響應中獲取缺少的「a」參數。然後他們使用它來構建正確的url,並使api調用google API來獲取圖像。之後,還有更復雜的工作,如將合成圖像與ImageMagick合併以獲得完整預覽,但這是一個加號...

+0

你有一個很好的解決方案,它證明了它可能!這並不完全回答這個問題,但由於Thumbtool有一個工作原型,他正在添加一個API,我將接受它。如果其他人發佈了一種方法直接使用Javascript獲取Google文件,我將很高興將其改爲正確的答案 –

+0

我對Google的俄文翻譯同樣印象深刻,因爲我使用的是開源解決方案。謝謝 –

+0

我應該補充說這已不再可行,因爲谷歌禁用了即時預覽功能。 – Mastergalen