前一篇帶各位實際使用了匯率爬蟲並搭配 openpyxl 這個套件做到執行程式便可讀取在 excel 撰寫的幣種,爬取該幣種的匯率並更新至 excel。
今天將與各位介紹 selenium 這個方便的動態爬蟲套件,撰寫 selenium 十分容易且懶人,就像在寫腳本,運行也與正常人類似(比較不會被反爬蟲擋)。在實際使用中,需要連結 webdriver 。
接下來請各位讀者先去下載對應 chrome 瀏覽器版本的 webdriver,記得要將 webdriver 放到專案路徑下(與 Python 程式同個路徑)。
https://chromedriver.chromium.org/downloads
接下來下載 Selenium
pipenv install selenium
可以執行該程式看是否會出現瀏覽器視窗。
from selenium import webdriver
driver = webdriver.Chrome()
進入網頁
driver.get(url)
selenium 提供非常多種方法來鎖定元素,使用上也非常直白,以下列出鎖定單一元素的用法(若有多個符合回傳第一個)。
driver.find_element_by_id()
driver.find_element_by_name()
driver.find_element_by_xpath()
driver.find_element_by_link_text()
driver.find_element_by_partial_link_text()
driver.find_element_by_tag_name()
driver.find_element_by_class_name()
driver.find_element_by_css_selector()
接下來列出可回傳所有的符合元素的用法,會回傳一個 list。其實也就是 element 後面加個 s。
driver.find_elements_by_name()
driver.find_elements_by_xpath()
driver.find_elements_by_link_text()
driver.find_elements_by_partial_link_text()
driver.find_elements_by_tag_name()
driver.find_elements_by_class_name()
driver.find_elements_by_css_selector()
element = driver.find_element_by_id("owo")
element.send_keys("password")
element = driver.find_element_by_id("owo")
element.clear()
element = driver.find_element_by_id("button")
element.click()
element = driver.find_element_by_id("owo")
element.submit()
關閉視窗
driver.close()
關閉瀏覽器
driver.quit()
今天帶各位稍微走過了一遍 Selenium 基本用法,熟用了以上用法其實就能模擬大部分使用者操作了,另外的用法將在之後與各位娓娓道來。
其實 Selenium 使用上十分容易,像極了寫腳本的過程,常用於模擬使用者的動態爬蟲。
明天會帶各位實戰 Dcard 爬蟲,爬取 Dcard 上的文章,會讓爬蟲幫我們滑手機歐><。
Selenium with Python docs : https://selenium-python.readthedocs.io/
Selenium docs : https://readthedocs.org/projects/selenium-python/downloads/pdf/latest/