目錄
1.介紹
2.使用?selenium
1.安裝
2.使用
1.測試打開網頁,抓取雷速體育日職乙信息
2.通過xpath查找
3.輸入文本框內容?send_keys
4.點擊事件?click
5.獲取網頁源碼:
7.seleniumt提供元素定位方式:8種
8.控制瀏覽器前進、后退、刷新
9.控制鼠標
10. 設置等待
11設置后臺運行
12.后臺終止
3.實戰
1.介紹
1. selenium是一個用于web應用程序自動化測試工具,Selenium測試直接運行在瀏覽器中;
2.像真正的用戶在操作一樣2,驅動瀏覽執行特定的動作,如點擊、下來等操作;
3.selenium支持瀏覽器
4.支持的語言
5.selenium在爬蟲的應用
2.使用?selenium
1.安裝
?pip3 install selenium
2.使用
1.測試打開網頁,抓取雷速體育日職乙信息
# coding:utf-8import time
from selenium import webdriver
from selenium.webdriver.common.by import By# 打開瀏覽器
webdriver_chrome = webdriver.Chrome()
# 瀏覽器窗口最大化:
webdriver_chrome.maximize_window()
# 爬取日職乙聯賽信息
webdriver_chrome.get("https://www.leisu.com/data/zuqiu/comp-568/season-11286")
# 默認頁面是升級附加賽:提取主隊信息
for home in webdriver_chrome.find_elements(By.XPATH, "//td[@class='home']/a"):print("升級附加賽:主隊信息:", home.text)
# 點擊聯賽
webdriver_chrome.find_element(By., "//div[@class='stage_name']").click()
# 獲取聯賽信息
for home in webdriver_chrome.find_elements(By.XPATH, "//td[@class='home']/a"):print("聯賽:主隊信息:", home.text)# 獲取標題
print("標題:", webdriver_chrome.title)
print("獲取cookie", webdriver_chrome.get_cookies())
print("獲取頁面源碼", webdriver_chrome.page_source())# 打開5秒關閉
time.sleep(5)# 關閉瀏覽器
webdriver_chrome.quit()
2.通過xpath查找
?webdriver_chrome.find_elements(By.XPATH, "//td[@class='home']/a")
3.輸入文本框內容?send_keys
?webdriver_chrome.find_element(By.XPATH,"//input[@id='']").send_keys("內容")
4.點擊事件?click
webdriver_chrome.find_element(By.XPATH,"//input[@id='']").click()
5.獲取網頁源碼:
webdriver_chrome.page_source()
6.獲取cookies
webdriver_chrome.get_cookies()
7.seleniumt提供元素定位方式:8種
老版本使用
新版使用
find_elements(By.XPATH, "原始值")
find_elements(By.ID, "原始值")
find_elements(By.CLASS_NAME, "原始值")
等等
8.控制瀏覽器前進、后退、刷新
9.控制鼠標
import time
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By# 打開瀏覽器
webdriver_chrome = webdriver.Chrome()
# 瀏覽器窗口最大化:
webdriver_chrome.maximize_window()
# 打開百度
webdriver_chrome.get("https://www.baidu.com/")
#鼠標移動到設置上
#定位設置
set_element_above=webdriver_chrome.find_element(By.ID,"s-usersetting-top")
print(set_element_above.text)
#移動鼠標到設置上
ActionChains(webdriver_chrome).move_to_element(set_element_above).perform()time.sleep(5)
webdriver_chrome.quit()
10. 設置等待
1. 使用場景:有時候需要等某些元素加載后進行操作,或者網絡原因需要加載;
2.等待分為2種方式,分為顯式等待和隱式等待
3.顯式等待代碼:打開百度,輸入內容
import timefrom selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC# 打開瀏覽器
webdriver_chrome = webdriver.Chrome()
# 瀏覽器窗口最大化:
webdriver_chrome.maximize_window()
# 打開百度
webdriver_chrome.get("https://www.baidu.com/")
# WebDriverWait:顯示等待
# 參數:1.webdriver_chrome打開瀏覽器對象,2.timeout,3.輪訓參數
# until:EC場景判斷,通過id找到輸入框
element = WebDriverWait(webdriver_chrome, 5, 0.5).until(EC.presence_of_element_located((By.ID, "kw")))
# 找到元素輸入查找內容
element.send_keys("Python")time.sleep(5)
webdriver_chrome.quit()
4.隱式等待代碼:打開百度,輸入內容
import timefrom selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementException# 打開瀏覽器
webdriver_chrome = webdriver.Chrome()
# 瀏覽器窗口最大化:
webdriver_chrome.maximize_window()
#隱式等待
webdriver_chrome.implicitly_wait(5)
# 打開百度
webdriver_chrome.get("https://www.baidu.com/")try:webdriver_chrome.find_element(By.ID,"kw1").send_keys("python")
except NoSuchElementException as e:print("超時沒有找到元素:",e)time.sleep(5)
webdriver_chrome.quit()
11設置后臺運行
from selenium.webdriver.chrome.options import Optionsoptions = {"headless": "--headless","no_sandbox": "--no-sandbox","gpu": "--disable-gpu" } chrome_options = Options()driver = webdriver.Chrome(options=chrome_options)
12.后臺終止
1.如運行異常可使用任務管理器,找到進程“chromediver.exe”結束進程
3.實戰
1. 自動爬取比賽信息
2.自動翻頁頁
3.導出到excel中
待完成...