再學爬蟲---selenium:

再學爬蟲—selenium:

selenium是一個自動化測試工具,利用它可以驅動瀏覽器完成指定操作。

使用之前要聲明瀏覽器對象:

from selenium import webdriver
browser=webdriver.Chrome()    #谷歌瀏覽器
browser=webdriver.Firefox()   #火狐瀏覽器
browser=webdriver.Edge()      #IE瀏覽器 版本更新好像沒用了
browser=webdriver.PhantomJS() #無頭瀏覽器

還有這種可以模擬瀏覽器操作且無界面:

chrome_options=webdriver.ChromeOptions()
chrome_options.add_argument("--headless")
browser=webdriver.Chrome(chrome_options=chrome_options)

基本用法:

訪問頁面:

browser.get("url")

查找單個節點:

find_element_by_id
find_element_by_name
find_element_by_xpath
find_element_by_link_text
find_element_by_tag_name
find_element_by_class_name
find_element_by_css_selector
......

返回的是一個WebElement對象

查找多個節點:

find_elements_by_id
find_elements_by_name
find_elements_by_xpath
find_elements_by_link_text
find_elements_by_tag_name
find_elements_by_class_name
find_elements_by_css_selector
......

其實就是在查找單個節點方法上加了一個s,但是返回的是一個列表。列表裏面還是WebElement對象。

節點交互:

輸入文字:

send_keys("輸入的文字")

清空文字:

clear()

點擊按鈕:

click()

還有很多,這裏就不一一列出了。

延時等待:

隱式等待:

如果selenium沒有在DOM中找到節點,將繼續等待,超出設定時間後,則拋出找不到節點的異常。也就是說,當查找節點而節點沒有立即出現的時候,隱式等待將等你帶一段時間再查找DOM,默認的時間是0。

browser.imlicitly_wait(10) #10秒

顯示等待:

如果在規定時間內加載出來了這個節點,就返回查找的節點;如果到了規定時間依然沒有加載出來該節點,則拋出超時異常。

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

wait=WebDriverWait(browser,10)  #10秒
input=wait.until(EC.presence_of_element_localed(By.ID,"q"))

以上是我在爬蟲過程中使用的比較多的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章