浏览器抓取网页(一个安装chrome1.1添加google源在打开的执行效果)
优采云 发布时间: 2022-01-24 16:17浏览器抓取网页(一个安装chrome1.1添加google源在打开的执行效果)
前言
Selenium 是一个模拟浏览器的自动化执行框架,但是如果每次执行任务都需要打开浏览器来处理任务,效率不高。最重要的是,如果是安装在Centos7服务器环境下,更不适合打开浏览器模拟操作,尤其是涉及到需要抓取网页图片的时候。
这时候,就该考虑使用 Chrome 的无头浏览器模式了。所谓无头浏览器模式,就是不需要打开浏览器,但可以模拟打开浏览器的执行效果,一切都在没有界面的情况下执行。
让我们看看安装是否部署执行。
1.安装chrome1.1 添加google的repo源
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
1.2 使用yum安装chrome浏览器
sudo yum makecache
sudo yum install google-chrome-stable -y
2.安装chromedriver驱动2.1 查看chrome的版本
安装成功后,查看安装的chrom版本如下:
[root@localhost opt]# google-chrome --version
Google Chrome 79.0.3945.79
[root@localhost opt]#
2.2 下载chromedriver
如果selenium要执行chrome浏览器,需要安装驱动chromedriver,下载chromedriver可以从两个地方下载,点击访问如下:
所以其实一般是访问国内的镜像地址,如下:
您可以看到有相当多的版本可供下载。从上面可以看出刚刚安装的chrome的版本号Google Chrome79.0.3945.79,所以大致根据版本号搜索
点击最新版本号进入,可以看到下载的系统版本,
因为我要安装在Centos7服务器上,所以选择linux64位版本。
wget http://npm.taobao.org/mirrors/chromedriver/79.0.3945.79/chromedriver_linux64.zip
我下载了/opt目录下的chromedriver_linux64.zip,然后解压。最后,编写环境配置文件/etc/profile。
# 1.进入opt目录
[root@localhost opt]# cd /opt/
# 2.下载chromdirver
[root@localhost opt]# wget http://npm.taobao.org/mirrors/chromedriver/78.0.3904.105/chromedriver_linux64.zip
# 3.解压zip包
[root@localhostopt]# unzip chromedriver_linux64.zip
# 4.得到一个二进制可执行文件
[root@server opt]# ls -ll chromedriver
-rwxrwxr-x 1 root root 11610824 Nov 19 02:20 chromedriver
# 5. 创建存放驱动的文件夹driver
[root@localhost opt]# mkdir -p /opt/driver/bin
# 6.将chromedirver放入文件夹driver中bin下
[root@localhost opt]# mv chromedriver /opt/driver/bin/
配置环境变量如下:
[root@localhost driver]# vim /etc/profile
...
# 添加内容
export DRIVER=/opt/driver
export PATH=$PATH:$DRIVER/bin
设置环境变量立即生效,执行全局命令查看chromedirver版本:
[root@localhost ~]# source /etc/profile
[root@localhost ~]#
[root@localhost ~]# chromedriver --version
ChromeDriver 78.0.3904.105 (60e2d8774a8151efa6a00b1f358371b1e0e07ee2-refs/branch-heads/3904@{#877})
[root@localhost ~]#
能够全局执行chromedriver说明环境配置已经生效。
3. 安装硒
selenium 可以简单地在项目的虚拟环境中使用 pip 安装
pip3 install selenium
4. 脚本测试
编写 test.py 脚本如下:
from selenium.webdriver import Chrome
from selenium.webdriver.chrome.options import Options
import time
import os.path
# 配置驱动路径
DRIVER_PATH = '/opt/driver/bin/chromedriver'
if __name__ == "__main__":
# 设置浏览器
options = Options()
options.add_argument('--no-sandbox')
options.add_argument('--headless') # 无头参数
options.add_argument('--disable-gpu')
# 启动浏览器
driver = Chrome(executable_path=DRIVER_PATH, options=options)
driver.maximize_window()
try:
# 访问页面
url = 'https://www.cnblogs.com/llxpbbs/'
driver.get(url)
time.sleep(1)
# 设置截屏整个网页的宽度以及高度
scroll_width = 1600
scroll_height = 1500
driver.set_window_size(scroll_width, scroll_height)
# 保存图片
img_path = os.getcwd()
img_name = time.strftime('%Y-%m-%d-%H-%M-%S', time.localtime(time.time()))
img = "%s.png" % os.path.join(img_path, img_name)
driver.get_screenshot_as_file(img)
# 关闭浏览器
driver.close()
driver.quit()
except Exception as e:
print(e)
在服务器上执行以下命令:
[root@localhost opt]# python3 test.py
[root@localhost opt]# ll
总用量 4812
-rw-r--r-- 1 root root 44991 8月 22 18:19 2019-12-17-18-19-32.png
-rw-r--r-- 1 root root 4875160 11月 19 2019 chromedriver_linux64.zip
drwxr-xr-x 3 root root 17 8月 22 17:34 driver
drwxr-xr-x 3 root root 20 8月 22 17:29 google
-rw-r--r-- 1 root root 1158 12月 17 2019 test.py
[root@localhost opt]#
下载图片看看,
可以看出已经能够正常模拟浏览器登录,并抓取网页的图片。从图中可以看出,所有中文的地方都以方框符号显示。这是因为Centos7默认没有安装中文字体,所以chrom浏览器打开时无法正常显示中文。
解决办法是为Centos7安装中文字体,这里就不介绍了。