2020年4月3日

股票分析不求人: 用 Google 試算表抓取網頁資料

前幾篇簡介了如何以 Google 試算表內置的功能查詢股價及指數。近來收到數個讀者詢問,問題不約而同和某些股票市場有關。這些股票市場的數據不能從 Google 試算表取得,可能因為 Google 與這些交易所的協議限制吧。
在此情況下,可以使用 Google 試算表的其他功能,直接從網頁擷取數據。

ImportHTML 函式
ImportHTML 函式可以用來從網頁取得清單或表格內容。對於那些以表格形式展示的財經資訊,這個功能就最適合。例如,以下網站以表格形式列出上證指數的歷史價格。
https://hk.investing.com/indices/shanghai-composite-historical-data
在 Google 試算表裡,可用以下函式抓取整個表格的內容:
=importhtml(“https://hk.investing.com/indices/shanghai-composite-historical-data”,”table”,2)
其中,第一個參數是網址,以頭尾以”號包圍。第二個參數是要指明抓取的是清單還是表格。清單是 “list” ,表格則用 “table” 。最後一個參數,指定那個清單或表格在網頁裡的索引號,例如第一個表格就是 1 ,最二個就是 2 ,如此類推。
那麼,要怎樣才知道想抓取的表格是第幾個呢?最簡單的方法是由 1 開始逐個測試。另外,亦可查閱網頁的原始碼,或者使用瀏覽器的插件查詢。
輸入函式後,結果如下圖。你可以利用抓取到的數據再製作圖表。
ImportHTML 範例

ImportXML 函式

ImportXML 函式可以用來從網頁取得指定位置的內容。例如剛才提及的網站,內有即時上證指數價格。我們可以用以下函式,直接取得該項資料:
=importxml(“https://hk.investing.com/indices/shanghai-composite-historical-data”,”//span[@class=’arial_26 inlineblock pid-40820-last‘]”)
第一個參數就是網址,不難理解。第二個參數,是用來指定網頁中的哪一個部份。例如即時上證指數價格,在網頁原始碼裡是這一行:
<span class=”arial_26 inlineblock pid-40820-last” id=”last_last” dir=”ltr”>2,605.81</span>
在上述函式裡,第二個參數的 span 和 arial_26 inlineblock pid-40820-last,就是取自這一行原始碼。
又例如這個價格的標題為 “上證指數 (SSEC)”,原始碼如下:
<h1 class=”float_lang_base_1 relativeAttr” dir=”ltr”>上證指數 (SSEC) </h1>
把以上函式裡藍色和紅色的部份換成 h1 和 float_lang_base_1 relativeAttr,便可以擷取這項資訊,即是:
=importxml(“https://hk.investing.com/indices/shanghai-composite-historical-data”,”//h1[@class=’float_lang_base_1 relativeAttr‘]”)
要在網頁裡找出合用的原始碼,不需要把原始碼從頭到尾看一遍。筆者習慣使用的 Chrome 瀏覽器,有一個功能可以快速找出網頁特定部份的原始碼。
首先選取你想抓取的資料,然後右按,選擇檢查 (Inspect),在畫面右會彈出網頁的原始碼,而你選取的資料的相關原始碼亦已被反白標示。再右按這段程式碼,選 Copy > Copy XPath,該程式碼就會複製到剪貼簿。
Inspect Element
利用以上兩個函式,就可以輕鬆取得大部份網頁裡的資料。Google 試算表裡還有其他 Import 系列的函式,有機會再談。
有一點必須留意,官方文件說這些函式只會每小時更新數據一次,所以並不適合用來實時擷取不斷更新的資料。但用來做每天收市分析,就綽綽有餘。
筆者已製作一個範例檔案,如欲索取,請到筆者的 Facebook 專頁讚好,然後傳訊息,範例的網址將於稍後奉上。日後有關投資分析的文章,亦會在專頁發佈。如有興趣閱讀更多本系列的文章,請讚好專頁以便收到新文章通知。

2 則留言:

  1. Thanks for sharing the useful information

    回覆刪除
    回覆
    1. 感謝捧場,你在網誌分享的投資資訊也很有用呢!

      刪除

命運是宿命嗎?從《無間道》講起!陳永仁注定要死?兵賊掉轉都係整定?

 《無間道》20周年,至今仍被譽為港產片天花板。 片中有好多隱喻,不說自明。但當中有個宿命主題,你又知不知道? 由兵變賊,由賊變兵,是命運注定嗎?如果陳永仁不做臥底,同樣會慘死?還是一個好警察? 從這套電影,講講命和運是甚麼,人生有沒有宿命。