Selenium环境安装配置
1. 引入selenium库和下载chrome web driver
pip install seleniumfrom selenium import webdriverfrom selenium.webdriver.chrome.service import Service
Chrom Web Driver Download

注意下载chromedriver和对应的版本号(去chrome浏览器->设置->帮助->关于里面查看,只要第一个大版本号对上就行)。 记住不是chrome!!!
Edge去找响应的web driver。
2. 指定Web driver路径
wd=webdriver.Chrome(service=Service(f"Path to\chromedriver.exe"))或者把包含chromedriver.exe的文件夹放入环境变量path内\
wd=webdriver.Chrome()或者使用webdriver_manager库
pip install webdriver-managerfrom webdriver_manager.chrome import ChromeDriverManagerwd=webdriver.Chrome(service=Service(ChromeDriverManager().install()))注意,如果使用Edge浏览器
from webdriver_manager.microsoft import EdgeChromiumDriverManagerwd=webdriver.Edge(service=Service(EdgeChromiumDriverManager().install()))
3. 让浏览器打开指定网页
wd.get("https://www.taobao.com")
4. 更多webdiver的操作可以参考
元素的选择
引用By库
from selenium.webdriver.common.by import By
1. 根据id选择
在浏览器开发者工具里面找元素id
根据id选择页面元素,返回WebElement对象element=wd.find_element(By.ID,"suggestion-search")
通过此WebElement对象,对页面元素进行操作,
比如输入字符串element.send_keys("ironman 3")
比如按下回车element.send_keys("\n")\
注意,若想处理元素么有找到的异常,可以except NoSuchElementException异常,这个属于编程基础范畴,在这里就不赘述了\
try:\ element=wd.find_element(By.ID,"code_suggest") except NoSuchElementException as e:\ print(e)
2. 根据class选择
跟用id查找类似,在浏览器开发者工具里面找元素class
根据class选择页面元素,返回WebElement对象列表elements=wd.find_elements(By.CLASS_NAME,"ipc-image")
可以循环elements列表中的内容
- 注意,有些版本较旧的视频或者教材中使用
elements=wd.find_elements_by_class_name("ipc-image")
已经过时,不要使用\ - 注意find_element和find_elements的区别
3. 根据标签选择
elements=wd.find_elements(By.TAG_NAME,"meta")
4. webdriver.find_element() vs element.find_element()
webdriver是搜索整个页面,element是搜索页面内部
5.implicity_wait
当找不到元素的时候,并不立即返回错误,而是等待一段时间wd.implicity_wait(10)
加入这行代码以后,find_element之类的查询元素的方法会每隔半秒钟去界面上查看一次直到找到元素,或者超过10秒最大时常
6.操作元素本身
- 获取文本
element.text,有时候会有特殊情况找不到 - 获取属性
element.get_attribute()\ - 获取整个html
element.get_attribute("outerHTML")\
7.切换到新窗口
如果需要切换到新窗口操作使用Webdriver对象的switch_to属性的window方法
wd.switch_to.window(handle)
其中handle是窗口的句柄,或者可以认为是窗口的id
8.ActionChains
有时候需要进行一连串的操作,需要用到actionchain
引用from selenium.webdriver.common.action_chains import ActionChains
ac=ActionChains(wd)
具体操作可以参考1. 中得了链接,比如
ac.move_to_element(search).move_by_offset(-10,0).click().send_keys("作息表\n").perform()