一些工具的介绍
什么是selenium
- Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,类型像我们玩游戏用的按键精灵,可以按指定的命令自动操作,不同是Selenium 可以直接运行在浏览器上,它支持所有主流的浏览器(包括PhantomJS这些无界面的浏览器)。
- Selenium 可以根据我们的指令,让浏览器自动加载页面,获取需要的数据,甚至页面截屏,或者判断网站上某些动作是否发生。
什么是PhantomJS(已停止更新 用chrome的无头模式代替)
- PhantomJS是一个无界面浏览器,他会把网站加载到内存并执行页面上的js
- Selenium 自己不带浏览器,不支持浏览器的功能,它需要与第三方浏览器结合在一起才能使用。但是我们有时候需要让它内嵌在代码中运行,所以我们可以用一个叫 PhantomJS 的工具代替真实的浏览器。
- 如果我们把 Selenium 和 PhantomJS 结合在一起,就可以运行一个非常强大的网络爬虫了,这个爬虫可以处理 JavaScrip、Cookie、headers,以及任何我们真实用户需要做的事情。
- PhantomJS 是一个功能完善(虽然无界面)的浏览器而非一个 Python 库,所以它不需要像 Python 的其他库一样安装,但我们可以通过Selenium调用PhantomJS来直接使用。
什么是Chrome Options
这是一个Chrome的参数对象,在此对象中使用add_argument()方法可以添加启动参数,添加完毕后可以在初始化Webdriver对象时将此Options对象传入,则可以实现以特定参数启动Chrome。
- 例子
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# 实例化一个启动参数对象
chrome_options = Options()
# 添加启动参数
chrome_options.add_argument('--window-size=1366,768')
# 将参数对象传入Chrome,则启动了一个设置了窗口大小的Chrome
browser = webdriver.Chrome(chrome_options=chrome_options)
- 常用的启动参数
什么是Chromedirver
- 他和PhantomJS的区别在于他是有界面的
- 无界面的效率更高 使用Chromedirver主要是可以观察一下操作浏览器的运行状况
为什么学习selenium
之前在使用cookie登录人人网的时候 需要先找到post接口 这个网址 ,通过抓包发现 post接口以及FormData的密码是js动态加密的,这样就需要分析js 比较难。然而 selenium直接用真实浏览器登录,就很轻松的解决了这个难点。
1. selenium的入门使用
1.1 知识点
- 掌握如何发送请求 加载网页
- 掌握如何进行简单的元素定位
- 掌握如何获取浏览器的数据
1.2 基本操作
- 导入及设置启动参数
# 导入 webdriver
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# 实例化一个启动参数对象
chrome_options = Options()
# 添加启动参数 (有很多参数 按需添加)
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument('--window-size=1920,1080')
- 加载网页:selenium通过控制浏览器,所以对应的获取的数据都是elements中的内容
# 将参数对象传入Chrome,则启动了一个设置了窗口大小的Chrome
driver