梦想加空间 - 一个程序猿的个人博客网站

您現在的位置是:首頁 >技術交流 >python3 selenium3 使用Chrome的無頭瀏覽器 截取網頁全屏圖片網站首頁技術交流

python3 selenium3 使用Chrome的無頭瀏覽器 截取網頁全屏圖片

三只小菜猿 2023-02-04 10:50:37
簡介前言 selenium是一個模擬瀏覽器的自動化執行框架,但是如果每次執行都要打開瀏覽器來處理任務的話,效率上都不高。最重要的是如果安裝在Centos7服務器環境下,打開瀏覽器來模擬操作是更加不合適的,尤其是碰上需要截取網頁圖片這樣的需求。 這時候就要考慮使用Chrome的無頭瀏覽器模式了。所謂的無頭瀏覽器模式也就是不需要打開瀏覽器,但是卻可以起到模擬打開瀏覽器的執行效果,一切無界面執行。

前言

selenium是一個模擬瀏覽器的自動化執行框架,但是如果每次執行都要打開瀏覽器來處理任務的話,效率上都不高。最重要的是如果安裝在Centos8服務器環境下,打開瀏覽器來模擬操作是更加不合適的,尤其是碰上需要截取網頁圖片這樣的需求。

這時候就要考慮使用Chrome的無頭瀏覽器模式了。所謂的無頭瀏覽器模式也就是不需要打開瀏覽器,但是卻可以起到模擬打開瀏覽器的執行效果,一切無界面執行。

下面來看看如果安裝部署到執行。

1.安裝chrome

1.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
[google-chrome]
name=google-chrome
baseurl=http://dl.google.com/linux/chrome/rpm/stable/$basearch
enabled=1
gpgcheck=0
gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub

1.2 使用yum安裝chrome瀏覽器(不是root用戶前面加sudo)

yum makecache
sudo yum install google-chrome-stable -y
sudo yum install google-chrome-stable -y

上面則是centos安裝谷歌瀏覽器,下面則安裝debian的安裝谷歌瀏覽器教程

1.安裝chrome

wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo apt-get -f install 
dpkg -i google-chrome-stable_current_amd64.deb

1.1如果提示錯誤:dpkg: error processing package google-chrome-stable (--install): 之后執行以下命令

sudo apt-get upgrade
sudo apt-get update
sudo apt-get -f install
dpkg -i google-chrome-stable_current_amd64.deb

經過以上步驟,谷歌瀏覽器就安裝完成了,接下來安裝驅動

2.安裝chromedriver驅動

2.1 查看chrome的版本

安裝成功之后,查看安裝的chrom版本如下

[root@locust03 ~]# google-chrome --version
Google Chrome 96.0.4664.45 
[root@locust03 ~]

2.2 下載chromedriver

****selenium如果想要執行chrome瀏覽器的話,是需要安裝驅動chromedriver的,而下載chromedriver可以從兩個地方去下載, 點擊訪問如下:

點擊訪問官網 點位訪問國內淘寶鏡像地址 那么其實一般都是訪問國內的鏡像地址,如下:****

點擊訪問官網 點位訪問國內淘寶鏡像地址

找到與自己相對應的最新版本,進行下載 因為我準備安裝在Centos8服務器上,所以選擇linux64位的版本。

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

2.3 添加至環境變量$PATH

# 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

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]#

將圖片下載查看一下,如下:

可以看到已經能夠正常模擬瀏覽器登陸,并且截取網頁的圖片下來。可以從圖片中看到,凡是中文的地方都是顯示方框的符號,這是因為Centos8默認下是沒有安裝中文字體的,所以chrom瀏覽器打開就無法正常顯示中文。

linux使用——CentOS8安裝中文字體 背景

項目開發中,給照片添加水印時,發現添加的字體顯示為“口口口口口口”,上網尋找答案,發現是系統部署的Linux服務器不支持水印中的中文字體。

解決方法

**服務器Linux系統中導入中文字體

系統環境**

**CentOS8

步驟**

使用root用戶登錄系統 查看已經安裝的中文字體:fc-list :lang=zh

在這里插入圖片描述 創建中文字體目錄并分配權限

創建目錄:

mkdir /usr/share/fonts/chinese

分配權限:

chmod -R 777 /usr/share/fonts/chinese

備注:CentOS字體所在目錄為 /usr/share/fonts下

從windows系統上查找所需要的中文字體

導入到/usr/share/fonts/chinese目錄下

windows字體目錄存在C:WindowsFonts下,字體文件一般都是.TTF .TTC 后綴 修改Linux字體配置文件

編輯字體配置文件:vim /etc/fonts/fonts.conf

增加中文字體目錄,如下圖:

<dir>/usr/share/fonts/chinese</dir>

刷新緩存:fc-cache 如果fc-cache失效,重啟下系統


夢想加空間!平時喜歡研究各種技術,目前在從事后端開發工作,熱愛生活、熱愛工作。
主站蜘蛛池模板: 微机继电保护测试仪,单相继电保护测试仪,三相继电保护测试仪,六相继电保护测试仪,介质损耗测试仪,氧化锌避雷器测试仪,无线核相仪-扬州豪泰电力科技有限公司 | 气动法兰软密封蝶阀-电动高温通风蝶阀-气动开关球阀-川沪阀门 | 洒水车|冷藏车|LED广告车|油罐车|道路救援车|垃圾车|程力专用汽车股份有限公司销售九分公司 | 苏州妙凯电子有限公司-供应军工电源芯片|线性恒流IC|开关电源IC|LED驱动芯片|MOS管|IPM|IGBT|MCU开发|电源模块 | 洒水车_水车_洒水车价格_喷水车_绿化喷洒车_绿化洒水车- 程力专用汽车股份有限公司 | 直膨式空调机组_风冷恒温恒湿_转轮式热回收_屋顶式空调机组_德州瑞尼森环保科技有限公司 | 碳化硅微粉_超细碳化硅微粉-潍坊凯华碳化硅微粉有限公司 | 真空电镀机_镀膜机厂家_离子镀膜机_磁控溅射镀膜设备_镀钛设备-江苏驰诚科技发展有限公司 | 日本国际高中_上海日本国际高中学校排名_日本国际高中留学课程_上海日语国际高中学校学费-上海工程技术大学国际多语种特色高中课程【官网】 | 粮食烘干机|玉米烘干机|稻谷烘干机|小麦烘干机|大型连续烘干塔|500吨连续烘干塔|钢板仓|-郑州新光矿山机械制造有限公司 | 自恢复保险丝_贴片保险丝_插件保险丝_力特保险丝_力特经销商_SMD贴片保险丝_一次性保险丝厂家—深圳市集电通实业有限公司 | 宜宾三江人才网_三江人才网_宜宾三江人才网_三江人才直聘网是本地颇具规模的网上人才市场 | 昆明纸箱厂-礼盒定制-包装盒定做-纸箱厂-云南包掌柜包装有限公司 | 三原图库 - 设计图片素材打包下载sytuku.com | 宿迁市华泰交通设施有限公司,上海第四代路名牌,天津仿罗马柱路名牌,标准路名牌,路名牌灯箱,公交站台,户外广告灯箱, 交通标志牌,社区阅报栏 | 云南亿华工贸有限公司-云南护栏网-云南锌钢护栏-昆明市政护栏-工地护栏-昆明护栏网厂家 | 上海钧尚电器有限公司 - Faulhaber电机 AMETEK pittman电机 AMETEK ROTRON军用航空风机 Exlar电动缸 MAE电机 MCG电机 CP电动工具 马头工具 AMCI驱动器 直流电机 减速箱 直流伺服电机,无刷电机,直线电机 直流防爆电机 防爆电机 汽车助力转向电机 EPS电机 faulhaber motor faulhaber gearbox NANOTEC电机 ELWOOD电机 PHYTRON电机 EXLAR伺服电动缸 高力矩、高性能直流电机,音圈电机,风机,直流风机,航空风机 | 碳纤维棒_碳纤维管_碳纤维缠绕管_嘉兴恒隆复合材料有限公司 | 厦门,泉州自助餐上门|生日自助餐|婚礼自助餐|公司聚会自助餐|户外烧烤|冷餐|茶歇外卖配送-福建非选餐饮公司 | 思沃普智能会议预约管理系统-视频会议管理-信息发布-访客管理-会议运维-会议支持-工位管理系统 | 艺术网 - 大型艺术类权威门户站 艺考培训-中影人教育 【官网】-中国艺考教育的引航者 | 物联网环控器-智能养殖监控系统-智能化养殖控制器-养殖环境控制器-朗锐恒科技 | 永州市冷水滩华立水力机械设备有限公司| 中证金服投资控股(深圳)有限公司 | 磐石在线-磐石市综合信息门户网www.pszx.com - Powered by Discuz! | 雷达液位计_耐磨热电偶_蒸汽_柴油,汽油_天然气流量计_巴歇尔槽_一体化温度变送器-江苏翔腾仪表有限公司 | 河南豫冀锅炉容器制造有限公司| 洁净室、手术室、实验室、无尘车间厂房的净化工程装修设计施工公司-福临建设 | 外圆/圆管抛光机_方管抛光机/除锈机_活塞杆抛光机-不锈钢管抛光机-邢台欧邦机械 | 少妇厨房与子伦_污污内射久久一区二区欧美日韩_四房婷婷 | 形创(CREAFORM)3D扫描仪|三维检测|三维数字化处理|3D设备租赁|3D打印|——北京中显恒业仪器仪表有限公司 | 样品前处理仪器_光谱仪器_色谱/分析仪器_测量/计量仪器_青岛聚创世纪环保科技有限公司 | 围墙护栏,护栏网,围栏,锌钢栅栏,护栏网厂家--安平县沃达金属丝网制造有限公司 | 河北瑞峰医疗-河北护理床-河北医用病床-河北养老院护理床-河北护理床厂家-河北病床厂家-河北瑞峰医疗 | 中房网_中国房地产业协会官方网站 | 铝合金线棒生产厂家-提供第三代精益管,防静电工作台定制与批发-宁波杰艾逖仓储设备有限公司 | 久久91精品久久91综合_国产亚洲自拍一区_国产精品第1页_亚洲高清视频一区_91成人午夜在线精品_亚洲国产精品网站在线播放_亚洲国产成人久久综合区_国产精品亚洲专区在线观看_免费视频精品一区二区三区 | 火绒杀毒软件|火绒安全企业版_西南|四川|重庆|贵州|云南|西藏|成都火绒服务中心_成都火影科技有限公司-火绒安全|成都火影科技|火绒 | 男装加盟,男装加盟店,男装代理,男装品牌加盟,品牌男装加盟-虎豹男装品牌加盟 | 钻机配件-岩心管-岩心管接箍-地质套管-煤矿用钻头-河南滨远机械设备有限公司 | 易众拍卖行-事故车拍卖,残值车拍卖,水淹车拍卖,全损车拍卖,修复车拍卖,碰橦车拍卖,瑕疵车拍卖,报废车拍卖,泡水车拍卖,拆车件拍卖,配件拍卖,火烧车拍卖,二手车拍卖专业线上平台 |