104學習

Mike Ku

Learn Code With Mike品牌創辦人

2021/12/28

必學的Python Selenium套件自動化網頁截圖技巧

Q:Python Selenium套件如何在特定位置截圖?
建立app.py檔案,引用Python Selenium及Webdriver-Manager模組,如下範例:
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
前往Yahoo奇摩股市的台積電每股盈餘圖表( https://tw.stock.yahoo.com/quote/2330/eps ),在圖表的地方按下右鍵,選擇「檢查」,利用圖表的class(樣式類別),來定位圖表的位置,如下範例:
driver = webdriver.Chrome(ChromeDriverManager().install())
charts = driver.find_element_by_class_name('chartjs-render-monitor')
driver.get_screenshot_as_file("2330.png")
driver.close()
而要將畫面移動到圖表的位置,就需要引用Python Selenium套件的ActionChains模組,如下範例:
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Chrome(ChromeDriverManager().install())
charts = driver.find_element_by_class_name('chartjs-render-monitor')
driver.get_screenshot_as_file("2330.png")
driver.close()
接著,建立ActionChains物件,並且呼叫move_to_element()方法,傳入所要移動到的元素位置,如下範例:
driver = webdriver.Chrome(ChromeDriverManager().install())
charts = driver.find_element_by_class_name('chartjs-render-monitor')
action = ActionChains(driver)
action.move_to_element(charts).perform()
driver.get_screenshot_as_file("2330.png")
driver.close()
成功截取了我們所需要的每股盈餘網頁圖表。而如果要截取多家公司的話,透過迴圈的方式即可完成,如下範例:
stockNos = ['2330', '2303', '2408']
driver = webdriver.Chrome(ChromeDriverManager().install())
for stockNo in stockNos:
charts = driver.find_element_by_class_name('chartjs-render-monitor')
action = ActionChains(driver)
action.move_to_element(charts).perform()
driver.get_screenshot_as_file(f"{stockNo}.png")
driver.close()
如果想要學習更多的Python應用教學,歡迎前往Learn Code With Mike( https://www.learncodewithmike.com/2021/09/python-selenium-screenshot.html
)網站觀看更多精彩內容。
2 0 1270 2