1 声明浏览器对象
from selenium import webdriver |
2 访问页面
用 get() 方法来请求一个网页,参数传入链接 URL 即可,比如在这里我们用 get() 方法访问淘宝,然后打印出源代码,代码如下
from selenium import webdriver |
3 查找节点
用于填充表单、模拟点击等等,比如我们想要完成向某个输入框输入文字的操作,总得需要知道这个输入框在哪里吧?所以 Selenium 提供了一系列查找节点的方法,我们可以用这些方法来获取想要的节点,以便于下一步执行一些动作或者提取信息
from selenium import webdriver |
列出所有获取单个节点的方法
find_element_by_id |
4 查找多节点
用 find_elements() 这样的方法,方法名称中 element 多了一个 s ,注意区分,也就是说,上面列举的方法加“s”就能实现多节点查找
如果我们用 find_element() 方法,只能获取匹配的第一个节点,结果是 WebElement 类型,如果用 find_elements() 方法,
则结果是列表类型,列表的每个节点是 WebElement 类型。
find_elements_by_id |
5 节点交互
Selenium 可以驱动浏览器来执行一些操作,也就是说我们可以让浏览器模拟执行一些动作,比较常见的用法有:
输入文字用 send_keys() 方法,清空文字用 clear() 方法,另外还有按钮点击,用 click() 方法。
from selenium import webdriver |
6 延时等待 - 显式等待
from selenium import webdriver |
所以这样可以做到的效果就是,在 10 秒内如果 ID 为 q 的节点即搜索框成功加载出来了,那就返回该节点,如果超过10 秒还没有加载出来,那就抛出异常。
对于按钮,可以更改一下等待条件,比如改为 element_to_be_clickable,也就是可点击,所以查找按钮时是查找 CSS 选择器为 .btn-search 的按钮,如果 10 秒内它是可点击的也就是成功加载出来了,那就返回这个按钮节点,如果超过 10 秒还不可点击,也就是没有加载出来,那就抛出异常。