請啟用 JavaScript 來查看內容

Google 搜尋結果 API — Aves API 完整教學

·

    (先澄清,以下非業配,純粹依個人使用過程描述。)

    前言

    因為某原因,需要爬取"Google 搜尋"頁面上的資料,沒多久前舊有的網頁爬蟲請求失敗了!! (不妙啊…

    後來多次嘗試,也改用手機網路分享(不同IP)測試,也是遇到同樣的問題"HTTP Error 429: Too Many Requests",並需要通過 reCAPTCHA 驗證
    📢 白話翻譯:你短時間送出太多請求了,一般人不可能這麼頻繁,我嚴重懷疑你是機器人,先出個題目讓你回答( 順便賺個免費勞工幫我們訓練機器學習 ),等確定你是真人再給你資料。

    後來想說為了穩定及時間因素,不要我們自己手動爬取、絞盡腦汁突破了,請求外援看看XD

    Photo by Harry Brewer on Unsplash
    Photo by Harry Brewer on Unsplash

    尋找 Google 搜尋 API

    先去 Google 官網看看是否提供對應功能的 API,結果是有 Custom Search JSON API ,但每天只免費提供 100 次搜尋,額外請求的費用為每 1000 個搜尋 5 美元,每天最多 1 萬次搜尋。
    這對我來說免費額度遠遠不夠,加購的價格又超貴 QAQ


    官方提供的不行,不然找找看網路上,有沒有別人提供免費或付費的 Google 搜尋 API 服務可以使用呢?因為感覺某些資訊公司也會有這種需求。

    後來找到「 Aves API 」,其他有提供類似的服務還有「 SerpApi 」、「 Rapid API 」、「 zenserp 」、「 ScraperBox 」、「 DataForSEO 」……等可以參考,多方去比較,找到最符合自己需求的服務。

    最後我選擇 Aves API,會選擇這個最主要的因素 – 便宜😅,這是我目前找到最便宜的,而且它計費的方式與其他有些不同,它是類似儲值的概念,你用多少就扣多少,沒有時間上的限制,而其他比較常見的是按月付款。

    Aves API 官網
    Aves API 官網

    測試頁面

    在 Aves API 官網首頁上有個可以實際輸入關鍵字,查看它回傳的資料是那些、長怎麼樣的 即時測試頁面(Live Demo) ,能在此先測試是否有符合自己的需求。

    即時測試頁面(Live Demo)
    即時測試頁面(Live Demo)

    API 相關文檔

    官方網站 API 文檔

    錯誤狀態代碼

    如果請求收到錯誤狀態代碼,可以在 這邊 查看是什麼原因,例如:API 金鑰無效、缺少查詢參數、帳戶額度不足。

    API 參數

    註冊後會取得唯一的 API Key(金鑰),送出請求時要代入。
    API 網址如下:

    https://api.avesapi.com/search?apikey=YOUR_API_KEY
    

    (使用 GET 方式送出請求,等同於你在瀏覽器直接輸入網址啦!)


    而此 API 目前可帶參數有以下這些:

    參數代表意思預設
    apikey[必要] 你的 API Key(金鑰)。[無]
    query[必要] 要搜尋的關鍵字。[無]
    device指定搜尋裝置平台:desktopmobiledesktop
    location指定位置參數,有助於取得基於位置的搜索結果。提供的位置在 places.json 此檔案內所列出來的,需要的話就帶入place_slug中的值。台灣可以使用"tw"在檔案內搜尋,例如有taipeitaichungtainankaohsiung等地點。[無]
    google_domain指定 Google 網域,支援的列表 google-domains.json 。台灣是 google.com.twgoogle.com
    gl指定查詢的國家代碼(預設美國),支援的列表 countries.json 。台灣是 twus
    hl指定查詢的語言(預設美語),支援的列表 languages.json 。繁體中文是 Chinese (Traditional)en
    num指定每頁顯示的結果數,測試最多到10010
    page指定頁數(1~10頁)。1
    uuleReturns the location based search results. (好像可以設定精確位置,但我不了解。)[無]
    outputAPI 回應資料的格式:jsonhtmljson

    * 還有我發現在它 API Playground 頁面,還有一個的參數是type,代表搜尋種類,有 web(預設)、imagenews 可選,但這個參數我還沒實際試過。

    使用範例

    舉例來說,我想要在 google.com.tw 網域上搜尋"手機",國家設定台灣、語言當然是繁體中文,想要看前 100 個搜尋結果,就如下代入參數請求:

    https://api.avesapi.com/search?apikey={your-api-key}&query=手機&google_domain=google.com.tw&gl=tw&hl=zh-tw&num=100
    

    或者參數也可以以字典(Dictionary)的方式呈現。
    在此使用 Python 程式來示範。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
    your_api_key = 'XXXXXXXXXX'
    keyword = '手機'
    
    api_url = 'https://api.avesapi.com/search'
    params = {
        'apikey': your_api_key,
        'type': 'web',
        'query': keyword,
        'device': 'desktop',
        'google_domain': 'google.com.tw',
        'gl': 'tw',
        'hl': 'zh-tw',
        'output': 'json',
        'num': 100
    }
    
    r = requests.get(url=api_url, params=params, timeout=35)
    if r.status_code == requests.codes.ok:
        print(r.json())
    

    回應資料如此: avesapi_data.json

    除了一般的搜尋結果與排名,如果搜尋結果內還有"圖片"、"影片"、"地圖"、"相關搜尋關鍵字",它一樣也可以取得。

    圖片 範例
    圖片 範例

    影片 範例
    影片 範例

    地圖 範例
    地圖 範例

    相關搜尋關鍵字 範例
    相關搜尋關鍵字 範例

    網站後台

    當你註冊後登入,即可進入 後台頁面 去查看更多相關資訊。

    其中有幾個重要的頁面:

    儀錶板(Dashboard)

    像是你還剩多少額度、最近請求的紀錄、每天使用量等等,以圖表來呈現。

    Dashboard 頁面
    Dashboard 頁面

    API Playground

    API Playground 以圖形化的操作頁面,讓你可以實際選擇參數、送出請求,並查看回傳的資料。如果你發現使用自己寫的程式,都沒有成功的話,也可以在此頁面測試,藉此排除是否是 API 的問題。
    但要注意,這邊請求會帶上自己的 API Key,因此每一次請求也是會扣積分的哦!

    API Playground 頁面
    API Playground 頁面

    剩下的是一些購買頁面、購買紀錄、個人資料等等,這邊我就不展示了。

    注意事項

    1. 有時因他們伺服器問題,會發生請求回應失敗,無法取得資料的情況,這時再重新送出請求一次即可,這個不會扣除積分。
    2. 使用發現有時請求會發生 timeout 逾時,沒有成功取得資料,但卻還是被扣了一個積分額度。
      與客服聯繫後得知,此 API 請求最大 timeout 為 30 秒,也就是說如果我requests.get(url, timeout=20) 設定 20 秒,但伺服器在 25 秒時才回覆資料,那我程式這邊雖然是 timeout,但他們是有送出資料(一樣算成功請求,會被扣積分)。所以建議 requests 中 timeout 要設定大於 30 秒。
    3. API 文檔有列出一些 禁止的關鍵字 ,例如:site:domain:title:before:……,可能因為這些進階查詢讓他們系統比較容易被檔吧(?),如果使用這類關鍵字查詢的話,每個成功請求會被扣 25 個積分。

    結語

    因為 Google 搜尋結果相關的 API 我也只使用過這一款,所以沒辦法跟你說是不是這個就是最好,但其實這類的服務大同小異,需要的話可以自行比較看看,官網文檔是否完整詳細、客服回應速度如何、是否提供台灣中文搜尋參數、計費方式、網路上別人的評價推薦。
    最好也註冊一個帳號,用免費的額度嘗試,是否有達到自己的需求。

    * 要注意某些網站可能沒有提供免費額度





    參考:
    Google Custom Search JSON API 官網
    Aves API 官網


    又一天過去了。今天覺得如何呢?
    夢想是不是又更遠了?

    —— 每天來點負能量


    🔻 如果覺得喜歡,歡迎在下方獎勵我 5 個讚~
    分享

    Jia
    作者
    Jia
    軟體工程師 - Software Engineer