Selenium库的用法
Selenium是一个自动化测试工具,利用它我们能够驱动浏览器执行特定的动作,如点击、下拉等操作。对于一些JavaScript渲染的页面来说,这种数据抓取的方式非常有效。
声明浏览器对象
Selenium支持非常多的浏览器,如Chrome、FireFox、Edge等,还有Android、BlackBerry等手机端浏览器。另外,也支持无界面浏览器PhantomJS。
声明方式:
from selenium import webdriver
# 创建谷歌浏览器对象
browser = webdriver.Chrome()
# 创建火狐浏览器对象
browser = webdriver.FireFox()
# 创建Edge浏览器对象
browser = webdriver.Edge()
# 创建PhantomJS浏览器对象
browser = webdriver.PhantomJS()
browser = webdriver.Safari()
通过上述代码就创建了常见的几种浏览器对象,并将其赋值给了browser对象,接下来,就可以利用browser对象执行各个动作来模拟浏览器了。
访问页面
可以利用get()方法来请求网页,参数传入链接URL即可,例如下面以访问淘宝页面为例:
from selenium import webdriver
browser = webdriver.FireFox()
browser.get('https://www.taobao.com')
# 将获取的网页源码打印在控制台
print(browser.page_source)
browse.close()
查找节点
Selenium可以驱动浏览器完成各种操作,比如填充表单、模拟点击等操作。但是要完成这些操作必须要知道所要点击的按钮以及输入内容的文本框,这个时候就需要查找相应的节点
1.单个节点
获取单个节点的方法:
-find_element_by_id:根据节点的id属性查找节点
-find_element_by_name:根据节点的name属性查找节点
-find_element_by_xpath:根据xpath选择器查找节点
-find_element_by_link_text:通过节点链接内容查找节点
-find_element_by_tag_name:通过节点名称查找节点
-find_element_by_class_name:通过节点的class属性查找节点
-find_element_by_css_selector:通过css选择器查找节点、
查找节点还可以利用通用方法find_element()通用方法,不过该方法需要传入两个参数:查找方式By和值。实际上就是相当于上述方法的通用版本,比如find_element_by_id(id)就等价于find_element(By.ID, id)
2.多个节点
如果需要查找的节点有多个,使用find_element()方法就只能得到第一个节点,这时候就需要使用find_elements()方法。
获取多个节点的方法:
-find_elements_by_id():根据节点id获取节点
-find_elements_by_name:根据节点name属性获取节点
-find_elements_by_xpath():根据xpth查找节点
-find_elements_by_tag_name():根据节点名称获取节点
-find_elements_by_class_name():根据class属性获取节点
-find_elements_by_css_selector():根据css选择器获取节点