Selenium可以模擬使用者在網頁中和表單的互動過程。下方整理了以程式來做簡單的網頁搜尋流程:
首先,我們要從程式監測谷歌瀏覽器至指定的網頁。加入implicitly_wait()函數以確保等待時間內讓瀏覽器開啟。
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
s = Service("chromedriver.exe")
driver = webdriver.Chrome(service=s)
driver.implicitly_wait(10)
driver.get("指定的網頁網址")
接著,用Selenium定位函數標示要執行動作的HTML元素,再使用send_keys()函數或使用click()函數來達成網頁的搜尋或登入頁面的過程。
定位目標 = driver.find_element(By.XX, " ")
定位目標.send_keys()
定位目標.click()
搜尋或登入完後,及可以用定位函數find_element(s)(By.XX, " ")定位要取得的資料的位置並擷取下來了!
模擬在Google瀏覽器搜尋並擷取搜尋結果的標題與連結
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.service import Service
s = Service("chromedriver.exe")
driver = webdriver.Chrome(service=s)
driver.implicitly_wait(10)
driver.get("https://www.google.com.tw")
#XPath定位出搜尋欄的HTML元素
keyword = driver.find_element(By.XPATH, "//input[@class='gLFyf gsfi']")
keyword.send_keys("輔仁大學")
keyword.send_keys(Keys.ENTER);
#XPath定位搜尋結果項目
items = driver.find_elements(By.XPATH, "//div[@class='MjjYud']")
HTML標籤定位搜尋結果項目的名稱和連結並擷取文字
for item in items:
h3 = item.find_element(By.TAG_NAME, "h3")
print(h3.text)
a = item.find_element(By.TAG_NAME, "a")
print(a.get_attribute("href"))
driver.quit()
搜尋"輔仁大學"並按下Enter鍵
相關標題與連結
模擬登入學生資訊入口網網站並擷取課程學習下的欄位文字與數字內容
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
import time
s = Service("chromedriver.exe")
driver = webdriver.Chrome(service=s)
driver.implicitly_wait(10)
driver.get("https://portal.fju.edu.tw/student/Account/Login")
#CSS選擇器定位出與帳號、密碼與登入按鈕的欄位,並執行輸入和點選的動作
username = "409570183"
password = "************"
user = driver.find_element(By.CSS_SELECTOR, "#UserID")
user.send_keys(username)
pwd = driver.find_element(By.CSS_SELECTOR, "#Password")
pwd.send_keys(password)
button = driver.find_element(By.CSS_SELECTOR, "#btnLogin")
button.click()
time.sleep(10)
#XPath定位搜尋的文字並印出
items = driver.find_elements(By.XPATH, "//div/div[@class='col-xs-9 text-right']")
p = driver.find_element(By.XPATH, "//div[@class='row'][4]/div/h3")
print(p.text)
for item in items:
print(item.text)
driver.quit()
登入帳號與密碼,完成後按登入鍵
課程學習下的欄位文字與數字