IDE: PyCharm 社区版
python: 3.7.2
浏览器: chrome 72.0.3626.81(正式版本) (64 位)(浏览器输入chrome://settings/help 可以查看)
selenium 是一个自动化测试工具, 我们可以用这个工具模拟用户登录网站, 然后在网站上面进行一些操作,也可以用于爬虫。
(这个是前端模拟用户操作,后台爬虫的话,用requests 和 BeautifulSoup 就行了)
第一步,在PyCharm 的项目中安装selenium
“File”-》“Settings” -》弹出窗口-》“Project Interpreter” =》点击右边的“+”
在弹出的窗口输入“selenium” -》点击左下角的“Install Package” =》安装成功。
第二步,下载chromedriver
谷歌官网的链接是不能直接访问到的,
国内镜像:http://npm.taobao.org/mirrors/chromedriver/
选择跟浏览器版本对应的chromedriver 下载, 我选的是
72.0.3626.7/ chromedriver_win32.zip (64位系统可以用)
解压到: 把chromedriver.exe 解压到Python的安装目录:Python\Python37\Scripts\ 里面
当然你可以解压到任何地方, 但是调用的时候webdriver.Chrome(executable_path="你解压的目录\chromedriver")
第三步, 简单测试
from selenium import webdriver
if __name__ == "__main__":
browser= webdriver.Chrome() #初始化并打开一个chrome 窗口
browser.maximize_window() #窗口最大化
browser.get('https://www.baidu.com/') #连接到百度
browser.implicitly_wait(10) #设置10秒超时
time.sleep(10)
browser.close() #关闭chrome窗口
效果图片
第四步,一些API
感觉就跟Jquery 一样对DOM 的操作很方便, 可以查找元素, 可以给元素赋值, 可以触发元素的事件,可以执行JS 语句。
1. var element = brower.find_element_by_*****("**") #获取单个个元素
find_elements_by_*****("**") #获取多个元素
- find_element_by_id("kw") #id
-
find_element_by_name("wd") #name
-
find_element_by_class_name("s_btn") #通过classname, 但是只能一个classname,不能同时传多个
-
find_element_by_css_selector(".bg.s_btn") #同上,都是classname, 但是这个可以多个classname,并且它也可以通过属性,id或后代选择元素,适合复杂的匹配
-
find_element_by_xpath(".//*[@id='kw']") #xpath,xpath 比较复杂,可以自行百度用法,复杂的匹配方式推荐xpath
-
find_element_by_tag_name("input") #tag name
-
find_element_by_link_text("新闻") #超链接的文字
-
find_element_by_partial_link_text("新") #超链接的文字一部分,类似模糊查询
上面8 个都有对应的find_elements_by_*****("**") 方法
2. 文本框的一些操作
- element.clear() #清空内容
- element.send_keys (u"输入的内容") #输入中文 u"****", 否则直接"****"
- element.send_keys(Keys.RETURN) #输入回车, 需要
from selenium.webdriver.common.keys import Keys
3. 操作选择框Select
from selenium.webdriver.support.ui import Select
选择框元素 = browser.find_element_by_id("选择框id") //先找到选择框元素
ss = Select(选择框元素) //初始化选择框对象
ss.select_by_index(0) //选中第一项, 选中第二项的话,参数为1