請啟用 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