1. selenium环境安装
Selenium环境的安装主要就是安装两样东西: 客户端库 和 浏览器 驱动 。
- selenium安装 pip install selenium
- 浏览器安装 首选谷歌浏览器
- 驱动安装 驱动版本要和浏览器版本对应
2. 基本使用
2.1 启动浏览器并搜索网站
2.2 定位元素
定位元素进行搜索 F12 进入开发者模式,找到Elements
选择页面元素,鼠标右击检查,找对对应语句,然后根据特征进行查找
下面所有定位元素的方法,返回的对象都是·WebElement对象
2.2.1 根据元素的id 属性选择元素
返回一个元素。可对这个元素进行如click的操作
浏览器,找到id为kw的元素后,将结果通过 浏览器驱动 返回给 自动化程序, 所以 find_element_by_id 方法会 返回一个 WebElement 类型的对象。这个WebElement 对象可以看成是对应 页面元素 的遥控器。我们通过这个WebElement对象 ,就可以 操控 对应的界面元素。
比如 : 调用这个对象的 send_keys 方法就可以在对应的元素中 输入字符串, 调用这个对象的 click 方法就可以 点击 该元素 其中\n 相当于回车 那不用回车,用页面按钮的百度一下,就右击,找id,为su 在新建一个element查找id=su,然后再进行element.click
2.2.2 根据 class属性选择元素
返回多个元素。可以通过.text获取对应元素的文本 一个元素可由多个class属性,但每次只能指定一个。
id为唯一标志,返回一个值。选择所有元素,根据class,返回所有文本。
wd.find_elements_by_class_name('animal')
注意
find_elements_by_class_name 方法返回的是找到的符合条件的 所有 元素 (这里有3个元素), 放在一个 列表 中返回。 首先,大家要注意: 通过 WebElement 对象的 text属性 可以获取该元素 在网页中的文本内容。 所以 下面的代码,可以打印出 element 对应 网页元素的 文本
print(element.text)
2.2.3 根据tag属性选择元素
根据标签名进行定位
wd.find_elements_by_tag_name('div')
2.2.4 通过WebElement对象选择元素
不仅 WebDriver对象有 选择元素 的方法, WebElement对象 也有选择元素的方法。
WebElement对象 也可以调用 find_elements_by_xxx, find_element_by_xxx 之类的方法
WebDriver 对象 选择元素的范围是 整个 web页面, 而
WebElement 对象 选择元素的范围是 该元素的内部。
2.3 等待界面元素出现
在我们进行网页操作的时候, 有的元素内容不是可以立即出现的, 可能会等待一段时间。因为我们的代码执行的速度比 百度服务器响应的速度快。
解决办法1:用sleep 来 等待几秒钟, 等百度服务器返回结果后,再去选择 id 为1 的元素
from time import sleep
sleep(2)
存在问题:有可能当前网速过慢,或者百度服务器处在高峰,每次的等待时间不确定,容易出错。
解决方法2:当发现元素没有找到的时候, 并不立即返回 找不到元素的错误。而是周期性(每隔半秒钟)重新寻找该元素,直到该元素找到,或者超出指定最大等待时长,这时才抛出异常(如果是 find_elements 之类的方法, 则是返回空列表)。Selenium 的 Webdriver 对象 有个方法叫implicitly_wait
|