Python 爬蟲

Selenium 篇

講者:Arashi

日期:2020/10/31

Outline

 

  • Selenium
  • 事前準備
  • 實作 - 登入輪值系統
  • 補充
  • reference

Selenium

  1. 可以測試web UI
     
  2. 能直觀的看到爬蟲跑的過程
     
  3. 可以針對 Chrome Firefox IE 去測試

優點

  1. 當瀏覽器版本更新時,要跟著下載新的driver 版本
     
  2. 運行的時間相對來說較久
     
  3. 頁面的轉換之間,最好放個等待,避免還沒載入頁面就執行程式,導致抓不到

缺點

事前準備

需要的軟體

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

Made with Slides.com