1、其常用的功能包括:设置浏览器的参数、浏览器多窗口切换、设置等待时间、文件的上传与下载、cookies处理以及frame框架的操作。
常用的设置:浏览器的可视化(加快代码的请求速度)和浏览求的请求头等信息(防反爬虫机制)
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
url = 'https://movie.douban.com/'
chrome_options = Options()
chrome_options.add_argument('--headless') #--headless表示不显示浏览器的操作过程
chrome_options.add_argument('lang=zh_CN.UTF-8') #设置参数防反爬虫
UserAgent = 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Firefox/68.0'
chrome_options.add_argument('UserAgent=' + UserAgent)
driver = webdriver.Chrome(chrome_options=chrome_options) #启动设置的参数
driver.maximize_window() #浏览器窗口最大化
driver.minimize_window() #浏览求窗口最小化
driver.get(url)
print(driver.title) #获取网页标题
print(driver.page_source) #源码
2、切换窗口来获取不同信息
from selenium import webdriver
import time
url = 'https://movie.douban.com/'
driver = webdriver.Chrome()
driver.get(url)
js = 'window.open("https://www.sina.com");'
driver.execute_script(js)
current_window = driver.current_window_handle #获取当前窗口信息
handles = driver.window_handles #获取打开的窗口信息
time.sleep(2)
driver.switch_to.window(handles[0]) #切换到第一个窗口
time.sleep(2)
driver.switch_to.window(handles[1]) #切换到第二个窗口
3、设置等待时间让网页响应尽量达到同步,保证程序的少出bug。以上用time模块实现,接下来使用selenium库提供的方法实现,其比time模块的等待更智能。
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions
url = 'https://www.baidu.com'
driver = webdriver.Chrome()
driver.get(url)
driver.implicitly_wait(10) #隐性等待时间,最多10秒
driver.find_element_by_id('kw').send_keys('哈哈')
condition = expected_conditions.visibility_of_element_located((By.ID,'kw'))
#.visibility_of_element_located检查页面元素是否可见
#(By.ID,'kw')kw为搜索框属性,By.ID是使用find_element_by_id定位
WebDriverWait(driver=driver, timeout=10, poll_frequency=0.5).until(condition) #显性等待时间
隐性等待时间:在设定时间内网页加载完成即刻自动执行下一步 ,否则抛出异常。
显性等待时间:程序隔一段时间检测网页是否加载完成,完成继续执行,否则继续等待直到超时。
4、cookie的添加、读取、删除操作
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("http://www.exame.com")
time.sleep(2)
driver.add_cookie({'name':'xixi','value':'123456'}) #添加cookie
all_cookie = driver.get_cookies() #获取所有cookie
#print(all_cookie)
cookie1 = driver.get_cookie('xixi')#获取一个cookie
print(cookie1)
driver.delete_cookie('xixi')
#surplus_cookies = driver.get_cookies()
#print(surplus_cookies)
网友评论