回顧[爬蟲很好玩,獲取籌碼資訊有解? 動態網頁的爬蟲方式!]這篇文章,(https://ithelp.ithome.com.tw/articles/10343993)
說到要使用python的套件工具是 Selenium
,
目標對象是富邦證券
的主力進出
舊版網頁,
但是難道要台股全部的股票都要爬嗎? 每一天也都爬嗎?
當然不是,在[決定欄位! 天下沒有白吃的午餐,股價、籌碼資料的其他來源?](決定欄位! 天下沒有白吃的午餐,股價、籌碼資料的其他來源?)這篇文章,我決定了欄位,
所以籌碼資料收集的目標標的應該是某一檔個股
,
籌碼資料收集的時間範圍也要明確一點,不要太長(不然會跑太久)。
既然這樣,我們就從前陣子的事件來抓標的,
因為 NVIDIA 再次爆紅,黃仁勳資執行長來台,
ComputerX台北國際電腦展之前,帶起的AI熱潮,尤其是機器人大軍。
那時候領軍的是 2359 所羅門
,開始了連續多日的漲停板,在短短不到一個月內,起漲點到高點漲幅至少有60%。
時間也拉回到起漲附近的交易日,設定在5/13~5/16
如果單純在主力進出切換到2359的頁面,
會看見這樣的圖和買賣超個股資訊,僅提供排序後的前15名買賣超券商
#(會發現網址把股票代號和資料區間都明確寫在裡面)
https://fubon-ebrokerdj.fbs.com.tw/z/zc/zco/zco.djhtm?a=2359&e=2024-5-13&f=2024-5-16
(如下圖)
可是這樣只有前15名的資訊就不夠完整,這時透過上面的單選按鈕切換到旁邊的單一
(在html元素裡面,單選按鈕稱為 radio )
#(仔細看會發現,網址也在裡面變成了不一樣的內容)
https://fubon-ebrokerdj.fbs.com.tw/z/zc/zco/zco0/zco0.djhtm?A=2359&BHID=1030&b=0031003000330043&C=1&D=2024-5-13&E=2024-5-16&ver=V3
透過下拉選單( select Tag ),這邊直接跳過上面的犇亞證券(牛牛牛證券)、口袋證券,
直接從土銀
這間券商開始,會發現這間券商有好幾個分點
這邊挑選土銀-白河
(如下圖)
設定好目標後,就開始來建置爬蟲需要的東西吧!
Selenium
進行爬蟲,需要webdriver
這個輔助工具
使用 Selenium 進行爬蟲要用到的 webdriver ,在不同的瀏覽器會有不同的 driver 。
例如: Chrome、Edge、Firefox、Safari、IE,
這邊有 Selenium 官方提供的支援瀏覽器清單
我比較常用 Chrome ,這邊就用 ChromeDriver
透過這個下載點,可以看到很多版本的ChromeDriver,
挑選 符合自己Chrome當前版本的
如果自己的版本太新,可以選最接近的,假如chrome版本127.0.xxxx,用版本126的ChromeDriver也可以
我的chrome版本是64位元的127.0.6533.100
(如下圖)
於是選擇這個最符合的對應版本(如下圖)
# 下載網址,開個新分頁輸入之後下載下來
https://storage.googleapis.com/chrome-for-testing-public/127.0.6533.99/win64/chromedriver-win64.zip
下載下來,會得到一個壓縮檔chromedriver-win64.zip
,
解壓縮後,保留chromedriver.exe
這個檔案,其他的是說明文件。
然後,就可以開始寫程式測試了!!
chromedriver.exe
和程式檔放在同一個資料夾下,接著開始用Python執行from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import os
import time
# 開啟瀏覽器視窗(Chrome)
# 方法一:執行前需開啟chromedriver.exe且與執行檔在同一個工作目錄 要放到系統PATH阿!!
#driver = webdriver.Chrome()
# 方法二:或是直接指定exe檔案路徑
#driver = webdriver.Chrome(“桌面\chromedriver”)
#driver = webdriver.Chrome(executable_path="E:/時空資料分析/關鍵分點籌碼分析_實測/chromedriver", options=options)
current_path = os.path.abspath(os.getcwd())
# The path of ChromeDriver
chromeDriver = current_path + r'/chromedriver.exe'
driver = webdriver.Chrome()
# 更改網址來前往不同網頁
driver.get("http://www.google.com")
# 停止動作,睡眠一秒鐘
time.sleep(1) #sleep for 1 sec
# 智能等待,只要前面條件成立,然後關閉瀏覽器
driver.implicitly_wait(2000)
driver.quit()
如果執行正常的話,會看見 ChromeDriver 從旁邊開了一個 chrome 瀏覽器分頁,然後過一下子又自己關掉。
上面這邊測試和Debug了好幾次,一開始以為是系統路徑沒有讀到,
把程式檔和ChromeDriver的資料夾加入系統環境變數後,又重新開機,試了好幾次。
一整個大無語,平時為了怕C槽太容易滿,東西都先下載到D槽或E槽,結果搞了很久。
直接把程式檔和ChromeDriver丟到C槽的Download 。
今天稍微看了一下這個的網頁原始碼,明天把需要的元素爬出來
https://fubon-ebrokerdj.fbs.com.tw/z/zc/zco/zco0/zco0.djhtm?A=2359&BHID=1030&b=0031003000330043&C=1&D=2024-5-13&E=2024-5-16&ver=V3
參考文章&資料來源:
每日記錄:
加權指數:收在21895.17點,下跌132.08點。
CPI合乎預期,通膨的軟著陸可能性越來越高了,
這波反彈也彈了3千點,稍微回檔了一下,之後波動應該又會趨於平常,牛市還在! (?
被這個ChromeDriver拖到了發文時間,學到了,下次就不會浪費太多時間QQ