【技术笔记】利用Selenium构建服务器无界面爬虫

该博客介绍了如何在无图形界面的Ubuntu服务器上安装Chrome浏览器和ChromeDriver,并使用Selenium进行后台网页爬取。首先,安装Chrome和依赖包,然后从国内镜像下载并配置ChromeDriver。最后,安装Selenium并提供了一个示例代码来验证无头爬虫的运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说在前面

在日常爬虫代码中,我们可以将各大云厂商购买到廉价服务器用来做分发爬虫任务。在一些反爬虫比较厉害的网站,我们一般可以选用Selenium来进行网站爬取。因为它模拟的就是我们平时在浏览器上的操作过程。但是这将会存在一个问题,Selenium 依赖的是具有图形界面的操作,而我们在云平台购买的服务器一般都没有图形界面的(预装Windows系统的除外)。那有没有让它在后台就可以运行的办法呢。答案是有的。下面就介绍一种常见的后台通过Selenium完成爬虫操作的过程。

1:安装浏览器(Google Chrome 版)

  1. 本人服务器是Ubuntu 16.04,另外18.04也测试过,一样可用;
  2. 程序语言环境是Python 3.6以上的版本;
  3. 浏览器测试过Google Chrome,本文举例版本为“87.0.4280.88”;
  • 在服务器中安装 Google Chrome 浏览器,具体步骤如下:
# 安装依赖包
sudo apt install libxss1 libappindicator1 libindicator7
# 下载 Google Chrome 程序包
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
# 执行安装程序【注:在安装后会提示 error 信息,忽略即可】
sudo dpkg -i google-chrome-stable_current_amd64.deb
# 安装依赖关系
sudo apt install -f
# 安装完成,查看 Google Chrome 版本
google-chrome --version 
# 本人输出的版本号是:Google Chrome 87.0.4280.88

2. 安装浏览器驱动

# 1. 解压zip包,没有unzip命令的直接可以通过 sudo apt install unzip进行安装
sudo unzip chromedriver_linux64.zip

# 2. 拷贝到 /usr/bin 目录下
sudo cp chromedriver /usr/bin

# 3. 设置为可执行
sudo chmod +x chromedriver

# 4. 查看是否安装成功(查看版本号)
sudo chromedriver --version
# 本人版本号:ChromeDriver 87.0.4280.88 (89e2380a3e36c3464b5dd1302349b1382549290d-refs/branch-heads/4280@{#1761})
  • OK,至此 Google Chrome 驱动安装完毕。在这里另外提供其他浏览器的阿里镜像地址方便大家取用(点击下方连接即可):
  • Firefox
  • Opera

3:安装Selenium以及编写示例代码

  • 最后就是安装 Selenium 以及运行我们的测试代码了
  • 安装 Selenium 就一行解决
sudo pip install Selenium

# 想要验证安装是否成功的话,查看 Selenium 版本
sudo pip show Selenium
# 本人版本是:Version: 3.141.0
  • 安装完成之后,我们可以编写下面这段程序来验证是否可以在无界面情况下爬取网页内容。直接上代码:
# -*- coding: utf-8 -*-

# --------------------------------
# Name:         data_crawler.py
# Author:       devshilei@gmail.com
# @Time         2020/12/24 下午4:30
# Description:  利用 Selenium 抓取数据示例
# --------------------------------

from selenium import webdriver

# 配置浏览器参数
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--headless")
chrome_options.add_argument("--disable-gpu")
chrome_options.add_argument("--no-sandbox")
# 声明浏览器,传递参数对象
browser = webdriver.Chrome(chrome_options=chrome_options)
# 打开百度
browser.get("https://www.baidu.com")
# 控制台输出网页内容
print(browser.page_source)
# 关闭浏览器
browser.quit()
  • 运行程序python data_crawler.py
  • 可以看到类似如下内容,说明我们可以在服务器进行无界面爬取网页代码了。
    Selenium示例代码输出内容.png
    OK.以上就是本人在工作中用Selenium在无界面服务器爬取网站的示例。希望对于各位极客们有所帮助。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑符石

感谢小主对原创的大力支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值