爬虫——selenium模块使用
selenium是一个web的自动化测试工具,最初是为网站自动化测试而开发的,selenium可以直接运行在浏览器上,它支持所有主流的浏览器,可以接收指令,让浏览器自动加载页面,获取需要的数据,甚至页面截屏,在反反爬虫中也是一个重要的工具,比较强大,但是缺点就是——慢。一般如果要爬的网站是动态加载的,那么可以考虑用selenium,听说号称 “可见即可爬”
Selenium+chromedriver+PhantomJS
selenium让程序连接到浏览器,让浏览器去完成各种操作,是一种自动化测试工具
1、selenium安装
(1)先下载驱动chromedriver(有头浏览器,用的比较多)
chromedriver能通过驱动打开谷歌浏览器,并通过代码对其进行操作
下载地址:https://registry.npmmirror.com/binary.html?path=chromedriver/
需要找到自己的谷歌浏览器版本,比如我99.0.4844.xx,对应前三部分即可,Windows只有32位版本的,但是问题不大,跟64位是兼容的
简单测试
以百度搜索首页为例,输入以下代码,会自动加载驱动打开chrome浏览器,并向输入框中输入字符,搜索相应字符的内容
from selenium import webdriver # 导入驱动器
import time
driver = webdriver.Chrome() # 实例化,指定打开chrome 浏览器
driver.get('https://www.baidu.com/') # 请求网址
time.sleep(2) # 做个延时处理,要不然很容易被发现
input_tag = driver.find_element_by_id('kw') # 通过标签id定位到输入框
input_tag.send_keys('北京大学') # 向输入框中输入内容
click_tag = driver.find_element_by_id('su') # 定位到“百度一下”案件
click_tag.click() # 按钮点击事件
time.sleep(3)
driver.close() # 关闭当前浏览器窗口
运行之后,会打开浏览器,并在输入框中输入“北京大学”,随后自动搜索,跳转到相关页面
(2)安装无头浏览器PhantomJS
PhantomJS 是一个浏览器驱动,但是不会打开浏览器,相当于盲人操作(也是对浏览器的操作),也就是通过代码的方式模拟人进行浏览器操作
下载地址:https://phantomjs.org/download.html
完成之后利用PhantomJS做个简单的测试,模拟人向网页发起请求,比如
from selenium import webdriver
driver = webdriver.PhantomJS()
driver.get("https://www.baidu.com")
driver.save_screenshot("baidu.png")
# 2.定位和操作
driver.find_element_by_id("kw").send_keys("北京大学")
driver.find_element_by_id("su").click()
# 3.查看请求信息
driver.page_source
driver.get_cookies()
driver.current_url # 查看当前访问的网址
# 4.退出
driver.quit()
运行这段代码之后,会在当前路径下保存一个百度首页的图片,但是运行过程中不会打开浏览器
注意,这两个安装好后要放到自己python的安装目录下,也可以添加到环境变量中,具体怎么添加相信不用多讲,毕竟都是大佬
像我这样
(3)再安装selenium
pip install selenium == 3.14.1 # (建议不要安装最新版,这是我用的版本)