Python Selenium 動態網頁爬蟲

Selenium 動態網頁爬蟲的基本指令

by yenchialu

瀏覽器簡單基本操作

打開瀏覽器+Get網頁

from selenium import webdriver
driver = webdriver.Chrome('./chromedriver')
driver.get("https://www.facebook.com")

上一頁+下一頁+重新載入

#上一頁
driver.back()
#下一頁
driver.forward()
#重新載入
driver.refresh()

滾動網頁

#滑到這次載入的底部,到底部後再往下滑,重複5次
for i in range(5):
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    time.sleep(1)

Selenium定位網站內容

如同人瀏覽網頁時,是針對不同的元素操作,以下是常見的指令

定位指令

  • find_element_by_id
    使用屬性 ID 定位,這是最推薦的定位方法,一個文本裡任何id只會出現一次
  • find_element_by_name
    使用屬性 name 定位
  • find_element_by_class_name
    使用屬性 class 定位
  • find_element_by_link_text
    針對連結標籤(<a href=…>…</a>)
  • find_element_by_xpath
    使用html的語法路徑定位

操作指令

#A是定位位置
#點擊
A.click()
#B是可輸入內容位置
#清空內容
B.clear()
B.send_keys('123')

網站等待載入指令

因為網站載入需要時間,需要給予緩存時間,等待所有東西都載入才可查找、定位或操作。

方法一 : timesleep

比較簡單方式就是在操作前加上timesleep,但因為每個網站載入時間長短不一,這並非最優解。

方法二 : 套件WebDriverWait

"""
格式如下,
WebDriverWait(瀏覽器, 最久等待時間).until(
    EC.presence_of_element_located((By.某個方法, 方法的內容))
)
"""
username = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.NAME, "username"))
)

You may also like

Leave a Comment