Selenium模拟浏览器Python爬虫指南

什么是Selenium

Selenium是一套完整的Web应用程序测试系统,它包含了测试的录制、编写及运行和测试的并行处理。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。完全有JavaScript编写,因此可以运行于任何支持JavaScript的浏览器上。

Selenium作为爬虫工具的优劣势分析

优势

不需要做复杂的抓包、构造请求、解析数据等,开发难度相对要低一些。其访问参数跟使用浏览器的正常用户一模一样,访问行为也相对更像正常用户,不容易被反爬虫策略命中。在需要模拟用户登录、浏览器滑动或点击时,使用Selenium执行js语句非常容易实现,比较适合动态网页的信息爬取。

2. 劣势

相比于抓包→构造请求→解析返回值的爬虫,由于Selenium需要生成一个浏览器环境,所有操作(与元素交互、获取元素内容等)均需要等待页面加载完毕后才可以继续进行,所以速度相比构造请求的慢很多。如果是爬取静态网页,不建议使用Selenium,原因是速度太慢,效率太低。建议使用其他爬虫工具,比如Scrapy。

Window系统下Selenium的安装与浏览器驱动配置

安装Selenium

第一步:安装配置Python环境,并安装pip组件。

第二步:在命令行工具中执行如下命令

pip install selenium

第三步:检查是否安装成功,再次执行上面命令,出现如下图所示,表示成功。

2. 配置浏览器驱动

第一步:查看支持的浏览器驱动,依次执行命令:

python from selenium import webdriver help(webdriver)

第二步:选择需要使用的浏览器驱动Webdriver,根据电脑的浏览器版本下载对应的驱动到本地。下面是常用驱动下载地址。

Chromedriver(谷歌浏览器)http://chromedriver.storage.googleapis.com/index.html Geckodriver(火狐浏览器)https://github.com/mozilla/geckodriver/releases IEdriver(IE浏览器)http://selenium-release.storage.googleapis.com/index.html Operadriver(Opera浏览器) https://cnpmjs.org/mirrors/operadriver

第三步:将下载的驱动,拷贝到python安装目录。

至此,关于Selenium的安装和驱动配置就全部搞定,下面关于Selenium的使用。

Selenium的基础框架

from selenium import webdriver from selenium.webdriver.chrome.options import Options if __name__ == __main__: options = Options() options.add_argument(--headless)# 不打开浏览器 options.add_argument(--disable-gpu)# 禁用GPU硬件加速 options.add_argument(user-agent="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2pre) Gecko/ K-Ninja/2.1.1")# 添加访问头 # options.add_argument(proxy-server="60.13.42.109:9999")# 添加代理 driver = webdriver.Chrome(options=options) # 使用驱动配置 driver.get("?fr=aladdin") driver.implicitly_wait(10) # 等待时间 element = driver.find_element_by_xpath("//div[@class=para]")# 执行页面定位语句 isDisplayed = element.is_displayed() # 判断是否允许访问 print(isDisplayed) print(element.text) # 将滚动条移动到页面的顶部 0:为顶部;:为底部 js = "var q=document.documentElement.scrollTop=0000"# js语句 driver.execute_script(js)# 执行语句 driver.close()