selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。
常用的当然是模拟Firefox和Chrome,毕竟方便调试。
通过这种可视化、模仿人浏览的方式,更为简单、直观的的获取页面上的信息,对于菜鸟来说,还是相对友好,会用F12查看要素就好。
使用流程:
1.下载对应浏览器webdriver
2.编写python脚本
下载对应浏览器版本的webdriver:
Firefox: https://github.com/mozilla/geckodriver/releases/
Chrome: http://chromedriver.storage.googleapis.com/index.html
编写脚本
首先导入selenium 库的 webdriver模块
from selenium import webdriver
根据需要,有些时候加载页面缓慢,要等待页面完成加载,就需要再导入等待的模块
from selenium.webdriver.support.ui import WebDriverWait
首先,启动webdriver,这里以Chrome为例(注意大小写,excutable_path参数,用于指定下载的chromedriver.exe的路径)
browser = webdriver.Chrome(executable_path=r'D:\用xxx\chromedriver.exe')
运行完成以后,会发现有一个chrome浏览器被打开,接下来需要让browser用get方法载入网页url
browser.get(url)
这个时候,浏览器webdriver就打开了一个页面,接下来就要在页面当中进行定位,这里页面的效果不是右键->源代码的效果,而是F12的效果,就可以开始进行元素定位了。元素定位有多种webdriver的方法,可以参考这篇文章:
史上最全!Selenium元素定位的30种方式
列举几种用来定位的方式,Xpath的功能相对来说最为强大。大家按需下菜。
# 获取id标签值
element = browser.find_element_by_id("passwd-id")
# 获取name标签值
element = browser.find_element_by_name("user-name")
# 获取标签名值
element = browser.find_elements_by_tag_name("input")
# 也可以通过XPath来匹配
element = browser.find_element_by_xpath("//input[@id='passwd-id']")
除了选择和爬取,也有模仿点击、输入的功能,具体可以参见这篇:
selenium教程
https://www.jianshu.com/p/6c82c965c014
据我所知,除了python,java也可以用,功能还是很强大的。