浏览器抓取网页(一个模拟浏览器的执行框架(一):安装部署到执行)

优采云 发布时间: 2021-10-29 20:19

  浏览器抓取网页(一个模拟浏览器的执行框架(一):安装部署到执行)

  前言

  Selenium是一个模拟浏览器的自动化执行框架,但是如果每次执行都要打开浏览器处理任务,效率不高。最重要的是,如果安装在Centos7服务器环境下,打开浏览器模拟操作比较不合适,尤其是需要截取网页图片的时候。

  这时候可以考虑使用Chrome的无头浏览器模式。所谓无头浏览器模式,不需要打开浏览器,但是可以模拟打开浏览器的执行效果,一切都是无界面执行的。

  下面我们来看看如何安装部署到执行。

  1.安装chrome 1.1 添加谷歌的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@locust03 ~]# google-chrome --version

Google Chrome 78.0.3904.108

[root@locust03 ~]#

  2.2 下载chromedriver

  selenium要执行chrome浏览器,需要安装驱动chromedriver,下载chromedriver可以从两个地方下载,点击访问如下:

  所以其实一般都是访问国内的镜像地址,如下:

  可以看到有很多版本可供下载。从上面可以看到chrome版本号Google Chrome 78.0.3904.108,所以大致按照版本号搜索。如下:

  点击最新版本号进入,可以看到下载的系统版本,如下:

  因为要安装在Centos7服务器上,所以选择linux64位版本。

  wget http://npm.taobao.org/mirrors/chromedriver/78.0.3904.105/chromedriver_linux64.zip

  2.3 添加到环境变量 $PATH

  我下载了/opt目录下的chromedriver_linux64.zip,然后解压。最后编写环境配置文件/etc/profile。

  # 1.进入opt目录

[root@server opt]# cd /opt/

# 2.下载chromdirver

[root@server opt]# wget http://npm.taobao.org/mirrors/chromedriver/78.0.3904.105/chromedriver_linux64.zip

# 3.解压zip包

[root@server opt]# 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@server opt]# mkdir -p /opt/driver/bin

# 6.将chromedirver放入文件夹driver中bin下

[root@server opt]# mv chromedriver /opt/driver/bin/

  配置环境变量如下:

  [root@server driver]# vim /etc/profile

...

# 添加内容

export DRIVER=/opt/driver

export PATH=$PATH:$DRIVER/bin

  设置环境变量立即生效,执行全局命令查看chromedirver版本:

  [root@server ~]# source /etc/profile

[root@server ~]#

[root@server ~]# chromedriver --version

ChromeDriver 78.0.3904.105 (60e2d8774a8151efa6a00b1f358371b1e0e07ee2-refs/branch-heads/3904@{#877})

[root@server ~]#

  能够全局执行 chromedriver 表示环境配置已经生效。

  3. 安装硒

  Selenium 可以简单地用 pip 安装在你项目的虚拟环境中

  pip3 install selenium

  执行查看安装的版本如下:

  [root@server selenium_ex]# pip3 install selenium

Looking in indexes: http://mirrors.tencentyun.com/pypi/simple

Collecting selenium

Downloading http://mirrors.tencentyun.com/pypi/packages/80/d6/4294f0b4bce4de0abf13e17190289f9d0613b0a44e5dd6a7f5ca98459853/selenium-3.141.0-py2.py3-none-any.whl (904kB)

|████████████████████████████████| 911kB 990kB/s

Requirement already satisfied: urllib3 in /usr/local/python3/lib/python3.7/site-packages (from selenium) (1.25.6)

Installing collected packages: selenium

Successfully installed selenium-3.141.0

[root@locust03 selenium_ex]#

  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.jianshu.com/u/a94f887f8776'

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@server selenium_ex]# python3 test.py

[root@server selenium_ex]#

[root@server selenium_ex]# ls

2019-11-28-15-06-48.png test.py

[root@server selenium_ex]#

  下载图片查看一下,如下:

  可以看到已经可以正常模拟浏览器登录了,网页的图片也被截取了。从图中可以看出,只要有中文,就会显示方框符号。这是因为Centos7默认没有安装中文字体,所以打开chrom浏览器无法正常显示中文。

  解决办法是安装Centos7的中文字体,这里就不介绍了。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线