相关文章推荐
眼睛小的消防车  ·  连接到binance ...·  2 周前    · 
求醉的斑马  ·  Intel ...·  1 周前    · 
英俊的凉面  ·  AlertDialog.setSingleC ...·  2 月前    · 
没有腹肌的沙滩裤  ·  tsx 编写react ...·  1 年前    · 
茫然的开心果  ·  Web & Electron ...·  1 年前    · 
Software Development

[行銷也要自動化] 用 Python Selenium + NodeJS + Amazon EC2 打造簡易關鍵字搜尋報表應用! 系列 第

今天要帶大家認識Google Trends API。

Google Trends大家應該蠻熟悉,它可以查詢特定關鍵字在不同國家、不同時間點的 搜尋熱度 ;通常被用來比較像似關鍵字或相同關鍵字在不同國家的表現。

原本Google Trends有官方的API,不過很不幸已經broken了...後來有人自己作unofficial版本,Python和NodeJS都有,今天我們用Jupyter Notebook來練習這個前人已經造好的輪子:)

  • 打開Jupyter Notebook:
  • user@ubuntu: ~$ jupyter notebook
    
  • 在jupyter import google trends api套件
  • from pytrends.request import TrendReq
    import json
    
  • 創一個TrendReq實例:
  • pytrend = TrendReq(hl='en-US', tz=360)
    

    tz=timezone

  • 設定要搜尋的字詞、時段、區域、類別
  • pytrend.build_payload(kw_list=['Donald Trump', 'Obama'], cat=0, timeframe='today 12-m', geo='US', gprop='')
    

    kw_list=放入想搜尋的字串,最多5個(但有方法可以hack,之後的文章在講XD)
    cat=類別,要google trends網站看一下你要的類別編號是什麼(如下圖)
    timeframe=時間區段
    geo=地理區域,台灣是TW,遇到比較不熟的區域用前面講過的方式來找即可
    gprop=Google property,搜尋結果的類型,有image, news, youtube...

  • 取得數據:
  • pytrend.interest_over_time()
    

    你會看到日期和"Donald Trump"、"Obama"相對應的搜尋數據分別被列出。假如我們只想看其中一個可以這麼做:

    pytrend.interest_over_time().get('Obama')
    
  • 因為我們希望以後call這個api拿到資料後,可以再將它們繪成圖表,因此我們需要將剛剛的數據(python list)化成json物件方便後續處理:
  • preload = json.loads(pytrend.interest_over_time().to_json(orient='table'))['data']
    print(json.dumps(preload, ensure_ascii=False))
    

    為什麼要先json.loads再json.dumps?
    * → 因為一開始生成json時使用的方法如果不用table,日期和排列都會不合適。*

    最後你會得到一串搜尋數據(如下圖)