Python 爬蟲
Selenium 篇
講者:Arashi
日期:2020/10/31
Outline
- Selenium
- 事前準備
- 實作 - 登入輪值系統
- 補充
- reference
Selenium
- 可以測試web UI
- 能直觀的看到爬蟲跑的過程
- 可以針對 Chrome Firefox IE 去測試
優點
- 當瀏覽器版本更新時,要跟著下載新的driver 版本
- 運行的時間相對來說較久
- 頁面的轉換之間,最好放個等待,避免還沒載入頁面就執行程式,導致抓不到
缺點
事前準備
需要的軟體
Chrome: | https://sites.google.com/a/chromium.org/chromedriver/downloads |
Edge: | https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/ |
Firefox: | https://github.com/mozilla/geckodriver/releases |
Safari: | https://webkit.org/blog/6900/webdriver-support-in-safari-10/ |

需要的套件
pip install -U selenium
實作 - 登入輪值系統
登入簽到就用這個做了,破解了你就可以在家簽到了OvO
from selenium import webdriver
driver = webdriver.Chrome(Chrome driver 所放置的位置)
driver.get(要開啟的網址)
from selenium import webdriver
driver = webdriver.Chrome('./chromedriver')
driver.get("http://140.136.153.127:5000/login")
開啟頁面
# 透過 xpath 去找到指定欄位
driver.find_element_by_xpath('//*[@id="signInAccountField"]').send_keys('404040000')
# 透過 name 去找到指定欄位
driver.find_element_by_name("account").send_keys('404040000')
#透過 id 去找到指定欄位
driver.find_element_by_id("signInAccountField").send_keys('404040000')
輸入帳密
# 透過 xpath 去找到指定欄位
driver.find_element_by_xpath('//*[@id="navbarDropdown"]').click()
按下送出
補充
Selenium 常用函式
from time import sleep
# 強行等待 time 秒後執行
sleep(time)
# 等待 time 秒後執行,如果在時間到前,網頁載入完畢,則直接執行
driver.implicitly_wait(time)
等待
Selenium 常用函式
# 清空輸入框
driver.find_element_by_name("username").clear()
# 關掉現在在的視窗
driver.close()
# 操作回到第num個視窗
driver.switch_to.window(windows[num])
Selenium IDE


Driver 版本變更問題
1. 取消瀏覽器更新,在同一個版本做測試
2. 用 Windows PowerShell 軟體管理工具 Chocolate 完成
3. 自幹一個 Python Chrome Driver Helper 在 Windows 底下運作,自動偵測當前的版本並且下載當前對應的 Driver
4. 認命的在每次更新版本時,手動下載相對應的Driver
reference
Thanks for listening
Python爬蟲Selenium篇
By arashi
Python爬蟲Selenium篇
- 73