缘由
目前由于工作需要,我们需要爬虫(本人严重申明:商业爬虫属于违规行为,请各位技术同事不要有意无意的做违规的事情)获取网页一些东西,但是大家都知道目前有很多网站都是用前后端分离的,使用curl请求是没办法获取到页面信息的,所以我们就基于目前我们相对擅长的技术点选择了 “Selenium”。刚好自己又会一点Python。所以这样我们的技术方案就可以执行下去了。
Selenium介绍
Selenium 是支持 web 浏览器自动化的一系列工具和库的综合项目。从我个人浅显的理解:提供了扩展来模拟用户与浏览器的交互。有如下特点
支持主流的大部分浏览器:ie、ff、safari、opera、chrome
支持多平台:windows、linux、MAC
支持主流语言的操作库:Python、Java、C#、Ruby、JavaScript、Kotlin
Selenium安装
操作库安装
由于我们使用的python语言,所以我们就要安装python的库。
pip install selenium
WebDriver
Selenium 通过使用 WebDriver 支持市场上所有主流浏览器的自动化。 Webdriver 是一个 API 和协议,它定义了一个语言中立的接口,用于控制 web 浏览器的行为。 每个浏览器都有一个特定的 WebDriver 实现,称为驱动程序。 驱动程序是负责委派给浏览器的组件,并处理与 Selenium 和浏览器之间的通信。
我个人使用的是Chrome浏览器,所以我需要下载Chrome的WebDriver,大家可以去官网下载对应浏览器版本的驱动:传送门。
#下载对应版本的浏览器(就是下面按照的chrome浏览器版本) wget https://chromedriver.storage.googleapis.com/91.0.4472.19/chromedriver_linux64.zip unzip chromedriver_linux64.zip chmod a+x chromedriver #放到环境变量中 cp chromedriver /usr/bin/
Chrome浏览器
我个人目前管理的服务器都是CentOS操作系统,所以我们就得在操作系统上面安装浏览器。
#第一步添加源 $ vim /etc/yum.repos.d/google.repo #添加如下内容 [google] name=Google-x86_64 baseurl=http://dl.google.com/linux/rpm/stable/x86_64 enabled=1 gpgcheck=0 gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub #第二步安装 $ sudo yum update $ sudo yum install google-chrome-stable #第三步查看chrome的版本 $ google-chrome --version
脚本测试
from selenium import webdriver if __name__ == "__main__": # 设置浏览器 options = webdriver.ChromeOptions() options.add_argument('--no-sandbox') options.add_argument('--headless') options.add_argument('--hide-scrollbars') # 隐藏滚动条, 应对一些特殊页面 options.add_argument('--disable-gpu')#谷歌文档提到需要加上这个属性来规避bug options.add_argument('blink-settings=imagesEnabled=false') # 不加载图片, 提升速度 # 启动浏览器 driver = webdriver.Chrome(executable_path="/data/www/driver/chromedriver_90_linux64", options=options) # 访问目标URL driver.get('http://www.jixuejima.cn') print(driver.page_source) driver.close() driver.quit()