ETH官方钱包

創作內容

0 GP

針對巴哈和噗浪的Python爬蟲─二、Google 相關(註:全文)

作者:SystemCall│2023-07-18 17:08:58│巴幣:0│人氣:222
針對巴哈姆特和噗浪的 Python 爬蟲
Python crawler for Gamer and Plurk
Player_SystemCall

2023 7 4
我把整個製作流程做成一份 PDF 文件囉,
不過除了程式碼和參考資料的連結可以複製外,
其他都不可以複製就是了。

二、Google 相關

(一)Google Sheets API

  在進到正題前,要先介紹一下 Google Cloud PlatformGCP),中文名為 Google 雲端平臺,主要為沒有建立相關軟硬體的個人或機構提供雲端運算服務,採用的基礎架構和 Google 搜尋引擎、Gmail YouTube 等相同。Google Cloud Console(控制臺)為 Google Cloud 的控制系統,需要使用 Google 帳戶登入才能使用。其他公司也有提供相關的服務,例如 Amazon Web Services(亞馬遜雲端運算服務)、Oracle Cloud(甲骨文雲)、Microsoft Azure(微軟線上服務)、Alibaba Cloud(阿里雲計算)和 GitHub 等。
  本次會用到的 Google Sheets API 在控制臺的 API 程式庫裡,類別為 Google Workspace,所以來教一下怎麼開一個新專案和開啟 API 服務,每個 API 服務都會有個獨特的金鑰,這是機密文件,不可以隨意洩露。
  第一步為進入 Google Cloud Console(控制臺),可以到雲端平臺登入後點選控制臺,也可以直接在 cloud.google.com 的最前面加上 console. 直接進入控制臺(console.cloud.google.com)。
5 Google Cloud Platform 首頁

6 Google Cloud Console 控制臺首頁

  第二步為建立新專案,點選控制臺首頁的「選取專案」,就會跑出下圖的畫面,然後點選「新增專案」,設定專案名稱,完成後按下「建立」。
7 專案介面

8 設定專案名稱

  第三步為設定 API,點選控制臺左上角的,然後如下圖操作,就會到達 API 程式庫,在左側的類別點選 Google Workspace,然後往下找。
9 從控制臺首頁進入 API 程式庫

10 API 程式庫

11 API 程式庫的 Google Workspace 類別

  由於我的需求是將資料定期寫到 Google Sheets 上,也就是將它當成資料庫,所以我在這裡點選 Google Sheets API,如果我要將資料印到 Google Docs,那就是點選 Google Docs API,然後按下下圖中的藍色按鈕「啟用」,之後會跳到一個明顯不一樣的畫面。
12 Google Sheets API 的啟用選擇畫面

13 Google Sheets API 已啟用

  第四步為建立憑證,在 API 和服務中的「程式庫」下方有個「憑證」,把它點下去,會到下方圖中的頁面,然後點下上方藍色的「+建立憑證」,選「請幫我選擇」。
14 憑證頁

15 建立憑證

  然後會跳到下圖的畫面,第 1 個答案選剛剛挑了什麼 API,第 2 個答案選「應用程式資料」,第 3 個答案選「不,我不會使用任何一項憑證」,然後點「下一步」。
16 建立憑證的第 1 個詢問部分

  接著會跳轉畫面到下圖建立服務帳戶,必須要填完 3 個部分才能順利取得憑證,第 1 個部分填入服務帳戶名稱,ID 則會邊填名稱邊自動生成,也可以在生成完後任意調整直到按下「建立並繼續」為止;第 2 部分則是設定剛剛創立的服務帳戶對這個專案的權限,點選角色,從裡面找到「擁有者」,然後按「繼續」;第 3 部分則是設定服務帳戶的管理員,上面那格填剛剛創立的服務帳戶 ID,下面那格填自己的 Gmail 帳戶,不用花時間慢慢打,直接從右邊複製就行了。好了之後點選「完成」,畫面會跳回 API 和服務的憑證,現在可以在服務帳戶那邊看到剛剛創立的服務帳戶。
17 建立憑證的第 1 個詢問部分

18 建立憑證的第 2 個詢問部分

19 建立憑證的第 3 個詢問部分

20 新的服務帳戶辦好了

  然後繼續,點選位於「管理服務帳戶」和「動作」下方的「筆圖示」編輯該服務帳戶,下圖這頁是該服務帳戶的詳細資訊,其標籤在服務帳戶名稱下方 5 個標籤的最左邊,點選「金鑰」標籤,按下在頁面上的「新增金鑰▼」,將金鑰類型選擇「JSON」後,按下「建立」,之後就會有 1 個副檔名為 .json 的檔案被下載下來。
21 服務帳戶的詳細資訊頁

22 服務帳戶的金鑰頁

23 建立服務帳戶的金鑰

24 建立服務帳戶的金鑰

  在 Json 格式的金鑰下載完成後,如果是在本地端且沒有安全疑慮的話,可以將其直接放在與程式相同位置的資料夾,方便直接讀取憑證,如果要稍微安全些和方便引用,可以放進環境變數檔案,如果是在雲端的話,雲端服務供應商和相關服務裡應該會有提供放置機密金鑰或是環境變數之類的地方。

(二)Google Sheets

  雖然我覺得現在基本上大部分人都會使用這東西,但還是要來大概說一下,一般人最常用到的文件編輯器為這 3 種:文件、試算表和簡報,在 Google 裡相對應的軟體叫做 Google 文件(Google Docs)、Google 試算表(Google Sheets)和 Google 簡報(Google Slides),創建一個它們的新檔案有 2 個方法,第 1 個方法就是直接在首頁點擊帳號圖像左邊的「???」,直接按應用程式圖示進到總覽頁面,然後按下「⊕」新開 1 個檔案,檔案的預設儲存位置在 Google 雲端硬碟的最外層;第 2 個方法為在 Google 雲端硬碟的特定儲存位置按右鍵點擊應用程式圖示新增一個檔案。
25  Google 首頁點開 Google 應用程式

26  Google 試算表的總覽頁面

27  Google 雲端硬碟點右鍵

  在創建完檔案後需要做三件事,一是開始思考如何將獲取到的數據放進去,這部分與程式是連動的,因為在制定數據在試算表的放置位置時,可能會發現還需要什麼東西,便再向程式檔案添加相對應的程式碼區塊;二是取得該檔案的網址,因為需要連線到該檔案本身,所以就需要確認該檔案的 ID,也就是 spreadsheetId 值,所以需要了解 google sheets 網址的組成構造,下面為一個檔案網址範例:https://docs.google.com/spreadsheets/d/spreadsheetId/edit#gid=sheetId,網址結構見下表:
1 網址構造表
網址構造 說明
https:// 通訊協定
docs 子網域
google 次級網域 主網域
com 頂級網域
spreadsheets 子目錄
d 不知道
spreadsheetId 試算表檔案 ID
edit# 大概是指編輯狀態
gid=sheetId 在檔案內的編輯位置,等號後面為全數字的工作表 ID
;三是將這份檔案「開啟共享」給前面創建的「服務帳戶」,權限為「編輯者」,然後等待完成的訊息。
28 將編輯權限給予服務帳號

  然後依照自身需求計算需要幾張試算表,我的設置是紀錄流量的工作表「流量紀錄表」、將流量圖形化顯示的(可有可無的)工作表「流量紀錄圖」、紀錄巴哈追蹤者名單的工作表「巴哈姆特追蹤名單」、紀錄噗浪追蹤者名單的工作表「噗浪追蹤名單」、紀錄爬蟲程式運作狀況的工作表「系統訊息」和記事用的工作表「備註」,下面開始說明美張工作表的格局配置。
  第 1 張,紀錄流量的工作表「流量紀錄表」,事實上,只要掛上對應社群的爬蟲,就有辦法從社群抓到簡單的數據,所以最頂層的分類是「時間」和「已被分類的社群」,前者的細項為「西元紀年」、「民國紀年」和「日期」,後者的細項為「社群好友人數」、「社群追蹤人數」、「社群當日流量數」、「社群累積流量數」、「月、季、半年和年總和和日平均」和「備註」,如下圖所示,A 欄到 C 欄為時間,D 欄到 I 欄為巴哈姆特的資料範圍,J 欄到 O 欄為噗浪的資料範圍,每個社群需要使用 6 個欄來紀錄資料。

2 流量紀錄表範例
時間(凍結欄和列)
社群(個人於該社群的網址)
西元
紀年
民國
紀年
日期 好友
人數
追蹤
人數
當日
流量
至今累積總流量 總和 備註
2023 112 1月1日





2023 112 1月2日





2023年 112年 1月3日





29 流量紀錄表-1

30 流量紀錄表-2

  第 2 張,將流量圖形化顯示的(可有可無的)工作表「流量紀錄圖」,功能是將第 1 張的一堆數據轉換成可視化圖形,在爬蟲程式裡,因為技術問題,所以並沒有任何與這張工作表相關的程式碼,所以可以忽略不建。
31 流量紀錄圖

  第 3 張和第 4 張,紀錄巴哈姆特 Gamer 和噗浪 Plurk 的朋友名單和追蹤者名單的工作表為「巴哈姆特追蹤名單」和「噗浪追蹤名單」,以下面這張表為模板,分別在同一張工作表內紀錄同社群的朋友名單和追蹤者名單,並且依照有幾個社群就建立幾張工作表。

3 追蹤名單範例
XX名單
XX帳號 XX名稱 註冊日期 最後上限日期 追蹤起始日 追蹤天數 追蹤結束日





















32 巴哈姆特追蹤名單

33 噗浪追蹤名單

  第 5 張,紀錄爬蟲程式運作狀況的工作表「系統訊息」,嚴格來說,只能靠這張工作表上面的紀錄來初步判斷爬蟲程式的正常與否,所以上面有劃分很多區塊,分別記錄重要訊息,後面有圖片同時做為範例一一展示。
  由次層標題「次數」、「天數」和「一天內的次數」構成的頂層標題「運作計數」所在之 A 欄、B 欄和 C 欄為凍結欄,目的為放置最頂層的標題和次一層的標題,所在之 1 列和 2 列為凍結列,目的為在工作表左右橫移時可以得知這是哪次和哪隻爬蟲程式所產生的結果。
  接下來依序列出這張工作表位在 1 列和 2 列的頂層標題和次層標題:運作計數──次數、天數和天次數;執行工作;時間──日期、開始時間、主程式執行時間和結束時間;程式運作狀態──裝置基本資訊取得、「追蹤者好友和流量統計數取得、追蹤者名單取得、好友名單取得、人氣記錄表寫入、名單寫入和系統寫入;時間來源──NTP 伺服器網址和 timeserver 序號;執行裝置──裝置名稱、裝置使用者名稱、裝置網路卡號碼(Mac)、網路名稱、區域網路 IPv4 位址、區域網路 IPv6 位址、區網版本、網際網路 IP 位址、使用版本、裝置所在座標、裝置所在 City、裝置所在 Region、裝置所在 Country、裝置所在時區、網路服務提供公司和自制系統 Autonomous system。
34 「系統訊息」工作表─運作計數、執行工作和時間

35 「系統訊息」工作表─運作計數和程式運作狀態

36 「系統訊息」工作表─運作計數、時間 來源和執行裝置 1

37 「系統訊息」工作表─運作計數、時間 來源和執行裝置 2

引用網址:http://www.jamesdambrosio.com/TrackBack.php?sn=5757663
All rights reserved. 版權所有,保留一切權利

相關創作

同標籤作品搜尋:Python|爬蟲程式|巴哈姆特|噗浪|流量紀錄器|crawler|Gamer|Plurk|googlesheets

留言共 0 篇留言

我要留言提醒:您尚未登入,請先登入再留言

喜歡★player0309 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:針對巴哈和噗浪的Pyth... 後一篇:針對巴哈和噗浪的Pyth...


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情? 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】