iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 10
0

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

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

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

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

tz=timezone

  1. 設定要搜尋的字詞、時段、區域、類別
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...

https://ithelp.ithome.com.tw/upload/images/20171231/20107784o3cWgh8RGw.png

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

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

pytrend.interest_over_time().get('Obama')
  1. 因為我們希望以後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,日期和排列都會不合適。*

最後你會得到一串搜尋數據(如下圖)
https://ithelp.ithome.com.tw/upload/images/20171231/20107784cU0tYJNjaF.png


上一篇
Day12:Selenium webdriver 定位物件方法比較 xpath v.s. css selector|Kearch 1.0 爬蟲關鍵字報表工具
系列文
[行銷也要自動化] 用 Python Selenium + NodeJS + Amazon EC2 打造簡易關鍵字搜尋報表應用!14

尚未有邦友留言

立即登入留言