一、Selenium介绍
1. 介绍
- Selenium是一个Web的
自动化测试工具,最初是为网站自动化测试而开发的,可以按照指定的命令自动操作,Selenium可以直接运行在浏览器上,可以支持所有的主流浏览器(包括PhantomJS这些无界面的浏览器) - Selenium自己不带浏览器,不支持浏览器的功能,需要与第三方浏览器结合在一起才能使用。有时候需要让他内嵌在代码中运行,所以可以使用以下模式:
selenium+phantomJS和selenium+chrome
2. 安装
在pycharm的terminal命令行下载安装
# 强调版本
pip install selenium==2.48.0
二、PhantomJS介绍
1. 介绍
- PhantomJS是一个基于Webkit的“
无界面”(headless)浏览器,他会把网站加载到内存并执行页面上的JavaScript,因为不会展示图形界面,所以运行起来更加高效。 - 如果把selenium和phantomJS结合在一起,就可以运行一个非常强大的
网络爬虫,可以处理JavaScript、cookie、headers,以及任何真实用户需要做的事情。
2. 和Chrome的对比
(1)selenium+phantomJS
- 无界面运行速度快
- 是一种工具,代替真实的浏览器。可以被网站识别。
(2)selenium+chrome
- 有界面运行速度稍低
- 真实的浏览器。轻易不会被发现,可靠性和安全性非常好。使用较多
3. 安装
(1)PhantomJS安装
- 在网上搜索
PhantomJS镜像
搜索镜像.png
-
下载phantomjs-2.1.1版本
下载.png
- 解压后将
bin目录下的phantomjs.exe文件复制粘贴在Anaconda环境下的Scripts目录下。
使用.png
使用Anaconda环境时会先加载scripts目录下的文件 -
测试
在windows命令行输入plantomjs如图所示,安装成功。
测试.png
(2)Chrome安装
chrome的安装要和Chrome浏览器版本接近
- 查看Chrome浏览器的版本
查找.png
查看版本信息.png
如果查看版本信息时发现检查更新错误,在官网重新下载安装浏览器 - 在网上搜索
chromedriver镜像
搜索chromedriver镜像.png
-
下载和浏览器版本最接近的版本
下载.png
- 解压将exe文件
chromedriver.exe文件复制粘贴在Anaconda环境下的Scripts目录下。 -
测试
在在windows命令行输入chromedriver如图出现版本信息,安装成功。
测试.png
三、使用
- 创建驱动对象
driver = webdriver.PhantomJS()
# driver = webdriver.Chrome()
- 请求
driver.get(url)
- 获取页面内容
html_str = driver.page_source
- 学习案例
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
# selenium使用步骤
# 1、创建浏览器驱动:就是制定使用哪个浏览器的驱动
driver = webdriver.Chrome() # 使用chrome有界面浏览器
# driver = webdriver.PhantomJS() # 使用phantomjs无界面浏览器
# 2、请求URL(相当于:浏览器地址栏中输入URL回车搜索)
driver.get('https://www.baidu.com/')
# 3、做浏览器操作
# (1)最大化窗口:截图确定比例范围时会使用
driver.maximize_window()
# (2)获取页面源代码:
# page_source就是浏览器html中的所有数据,将js执行后得到的页面源代码
# 看到什么就能获取什么,就是F12开发者工具下的element里面的内容
# 区分网页页面源代码,是不同的
html_str = driver.page_source
# (3)获取页面元素返回的对象:WebElement
# 通过id获取:尽量使用id,因为id唯一
input_id = driver.find_element_by_id('kw') # 搜索框
# 通过xpath获取:
input_xpath = driver.find_element_by_xpath('//*[@id="kw"]')
# 通过css选择器获取:
input_css = driver.find_element_by_css_selector('#kw')
# print(input_id, input_xpath, input_css, sep='\n')
# (4)WebElement的操作
# 通用操作:获取属性、内容
# 例如:input:输入,btn:点击,form表单:提交
print('maxlength属性', input_id.get_attribute('maxlength'))
print('maxlength内容', input_id.text)
# 截屏
driver.save_screenshot('before.png')
# 输入(相当于:在浏览器搜索框输入搜索条件)
input_id.send_keys('python学习')
driver.save_screenshot('after.png')
# 点击:例子:点击百度一下
driver.find_element_by_xpath('//*[@id="su"]').click()
# 提交(form表单)
# 获取cookies(cookie池)
cookies = driver.get_cookies()
# print(cookies)
# 重新输入一个内容查找
input_id.send_keys(Keys.CONTROL, 'a') # 全选==ctrl+A
input_id.send_keys(Keys.CONTROL, 'x') # 剪切==ctrl+x
input_id.send_keys('刘亦菲')
# 退出
driver.close() # 关闭选项卡,通常情况下只打开一个,所以关闭选项卡即关闭浏览器
driver.quit() # 相当于点击X,直接关闭浏览器












网友评论