【筆記】Selenium 實作:讓你的網頁自動幫你開啟網站

更新 發佈閱讀 6 分鐘
當Selenium環境做好以後就可以拿它來做點事情了,這次我們試試如何讓網頁幫你搜尋並登入網站,以電子書網站readmoo為例。

延續【筆記】Selenium with Python 環境配置

#導入webdriver​
from selenium import webdriver

#建立一個chrome的webdriver
driver = webdriver.Chrome()

#開啟的網址是google首頁
driver.get("https://www.google.com")

#防止網頁馬上開了就關,再執行一次檔案就可以關閉頁面
input()

為了要讓接下來的程式運作順利,我們需要載入兩個套件:

#載入需要的套件​
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys​
  • By 套件 用於協助定位元素,讓我們可以在頁面中找到想要的操作元素

常用的定位方法如:

By.CSS_SELECTOR:抓CSS選擇器來定位,幾乎可以做到大多數的定位方式

By.ID:抓"ID"屬性來定位

By.NAME:抓"NAME"屬性來定位

By.LINK_TEXT:根據連接元素的文本內容來定位

By.XPATH:用XPath表達式定位

By.TAG_NAME:用標籤定位元素,例如<div>、<p>、<a>、<input>

開啟瀏覽器的「開發人員工具」,點擊元素(Elements)分頁就可以看到了

google搜尋欄位的元素

google搜尋欄位的元素

  • Keys 套件 用於模擬鍵盤操作

常用的操作如:

Keys.ENTER:就是鍵盤上的ENTER,Keys.RETURN同等意思

Keys.ESCAPE:Esc鍵

Keys.ARROW_UP:上箭頭;DOWN,下箭頭;LEFT,左箭頭;RIGHT,右箭頭。

Keys.BACKSPACE:退格鍵,就是鍵盤的ENTER上面長長的"<——"

Keys.DELETE:刪除鍵

Keys.PAGE_UP:Page Up鍵,可以頁面往上移動

Keys.PAGE_DOWN:Page Down鍵,可以頁面往下移動


導入套件後,首先我們需要定位google的搜尋欄位,以上方截圖當例子:

#定義一個​變數為search_box,它是用來抓取搜尋欄位的元素的
search_box = driver.find_element(By.NAME,"q")


抓取到我們要的元素以後,由於我們要搜尋Readmoo這本電子書的網站,因此我們就讓輸入框輸入 "readmoo"

#調用​search_box鎖定的輸入框,在輸入框輸入 readmoo
search_box.send_keys("readmoo")


輸入完之後,點擊送出

#調用​search_box鎖定的輸入框,在輸入框模仿鍵盤按ENTER
search_box.send_keys(Keys.ENTER)


結果如下:

raw-image
接著我們要控制瀏覽器鎖定Google搜尋結果:

#​定義一個變數為 search_results,用來抓取Google搜尋結果的元素
search_results = driver.find_elements(By.CSS_SELECTOR, "div.g")


"div.g"怎麼來的

透過瀏覽器的「開發者工具」,我們會發現網頁用<div></div>把搜尋結果包在裡面,如下圖:

raw-image

展開後,每個搜尋結果的class都會一個帶有g開頭(google額外的廣告會是不同的格式),所以可以用css選擇器(By.CSS_SELECTOR)選擇div裡面的g,篩選到每個搜尋結果,如下圖:

raw-image

我們篩選第一個當成是我們到網站的選項,並且點擊,到達我們要到的網址

#定義first_results,他是搜尋結果的第一個
first_results = search_results[0]
#定義link,調用​first_results,並進行定位
link = first_results.find_element(By.TAG_NAME,"h3")
#點擊link​
link.click()

結果如下:

閃退了,並出現錯誤提示

閃退了,並出現錯誤提示

錯誤提示 IndexError: list index out of range,表示嘗試訪問的陣列元素索引超出陣列範圍,在網頁自動化跳轉的情況下產生這個錯誤通常是網頁還沒有載入資料就先執行檔案了,導致抓不到。

因此需要讓我們的driver多一點等待,需要加入這個設定:

#​driver加入隱含等待
driver.implicitly_wait(10)

隱含等待告訴selenium尋找元素時,最多等10秒,如果10秒內出現要尋找的元素,繼續執行後續的程式碼,等超過10秒都沒有出現,則跳異常。

總結

#導入webdriver​
from selenium import webdriver

#套件​
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()
driver.get("https://www.google.com")
driver.implicitly_wait(10)

#google欄位,關鍵字輸入
search_box = driver.find_element(By.NAME,"q")
search_box.send_keys("readmoo")
search_box.send_keys(Keys.ENTER)

#搜尋結果定位
search_results = driver.find_elements(By.CSS_SELECTOR, "div.g")
first_results = search_results[0]
link = first_results.find_element(By.TAG_NAME,"h3")
link.click()

input()


結果如下:

raw-image

我們讓瀏覽器自動幫我們搜尋預想到的頁面了,但頁面有彈窗,如果想要讓瀏覽器做別的動作,那就會需要對彈窗進行處理,下一篇內容會讓瀏覽器關閉彈窗,並自動登入帳號成功。

留言
avatar-img
冬霞的沙龍
22會員
18內容數
冬霞的沙龍的其他內容
2023/10/22
用程式協助尋找殖利率跟可以進場的點位
Thumbnail
2023/10/22
用程式協助尋找殖利率跟可以進場的點位
Thumbnail
2023/10/15
利用git把檔案推到github上
Thumbnail
2023/10/15
利用git把檔案推到github上
Thumbnail
看更多
你可能也想看
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
Selenium 是一個範圍廣泛的工具和函式庫的總稱專案,用於啟用和支援網頁瀏覽器的自動化。Selenium WebDriver 提供了 C#、JavaScript、Java、Python、Ruby 等多種語言的 API,可以用於編寫自動化測試軟體。 在定位元素時,WebDriver 提供對這 8
Thumbnail
Selenium 是一個範圍廣泛的工具和函式庫的總稱專案,用於啟用和支援網頁瀏覽器的自動化。Selenium WebDriver 提供了 C#、JavaScript、Java、Python、Ruby 等多種語言的 API,可以用於編寫自動化測試軟體。 在定位元素時,WebDriver 提供對這 8
Thumbnail
在這一課中,我們將學習如何在Python中使用beautifulsoup4和requests模塊進行基本的網頁爬蟲。 首先,你需要安裝beautifulsoup4模塊,如果你還沒有安裝它的話:
Thumbnail
在這一課中,我們將學習如何在Python中使用beautifulsoup4和requests模塊進行基本的網頁爬蟲。 首先,你需要安裝beautifulsoup4模塊,如果你還沒有安裝它的話:
Thumbnail
使用顯性等待,以及讓我們的自動化網頁看起來有像測試的樣子 另外,readmoo電子書真的很方便啊
Thumbnail
使用顯性等待,以及讓我們的自動化網頁看起來有像測試的樣子 另外,readmoo電子書真的很方便啊
Thumbnail
上一篇我們已經介紹過Google Colab的基本用法,建議可以先行閱讀「【Google Colab系列】台股分析預備式: Colab平台與Python如何擦出火花?」,進行基本概念與環境的建置再進行下一步會比較容易進行學習。 雖然網路上已經提供非常多的股市資訊,但各個網站可能都零零散散,難免我們得
Thumbnail
上一篇我們已經介紹過Google Colab的基本用法,建議可以先行閱讀「【Google Colab系列】台股分析預備式: Colab平台與Python如何擦出火花?」,進行基本概念與環境的建置再進行下一步會比較容易進行學習。 雖然網路上已經提供非常多的股市資訊,但各個網站可能都零零散散,難免我們得
Thumbnail
畢竟~我是一個懶人嘛... 估狗之後,大部分的做法就是手動的去下載當前瀏覽器對應版本的 Driver,放到一個特定位置,將 Driver Binary 位置指向它。 在 Google Chrome About Page 你可以看到版本 接著去下載對應的 Chrome Driver ↓ 解決方案:
Thumbnail
畢竟~我是一個懶人嘛... 估狗之後,大部分的做法就是手動的去下載當前瀏覽器對應版本的 Driver,放到一個特定位置,將 Driver Binary 位置指向它。 在 Google Chrome About Page 你可以看到版本 接著去下載對應的 Chrome Driver ↓ 解決方案:
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News