缘由
目前由于工作需要,我们需要爬虫(本人严重申明:商业爬虫属于违规行为,请各位技术同事不要有意无意的做违规的事情)获取网页一些东西,但是大家都知道目前有很多网站都是用前后端分离的,使用curl请求是没办法获取到页面信息的,所以我们就基于目前我们相对擅长的技术点选择了 “Selenium”。刚好自己又会一点Python。所以这样我们的技术方案就可以执行下去了。
Selenium介绍
Selenium 是支持 web 浏览器自动化的一系列工具和库的综合项目。从我个人浅显的理解:提供了扩展来模拟用户与浏览器的交互。有如下特点
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()
演示视频
不错
回复 @ apanly: 非常不错