python+selenium+headless截取html界面图片

lys2020年03月23日 0条评论

python+selenium+headless截取html界面图片,服务器端html图片截取

# coding=utf-8
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
import sys

url = None
for num in range(1, len(sys.argv)):
    if num == 1:
        url = sys.argv[1]
    print("parameter %d is %s " % (num, sys.argv[num]))
# url="https://www.developzhe.com/"
if url == None:
   url="https://www.developzhe.com/"
chrome_options = Options()
# specify headless mode
chrome_options.add_argument("--headless")  # 无界面模式运行
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument("--window-size=1920,1080")  # 设置屏幕宽高
chrome_options.add_argument("--hide-scrollbars")
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
# chrome_options.add_argument('blink-settings=imagesEnabled=false') #不加载图片
driver = webdriver.Chrome(options=chrome_options, executable_path='/usr/lib64/chromium-browser/chromedriver')
driver.get(url)
print(driver.title)
save_fn = './images/163.png'
time.sleep(4)
# 获取document页面宽高
scroll_width = driver.execute_script('return document.body.parentNode.scrollWidth')
scroll_height = driver.execute_script('return document.body.parentNode.scrollHeight')
print(scroll_width, scroll_height)
driver.set_window_size(scroll_width, scroll_height)  # 变更窗口大小
time.sleep(3)
driver.save_screenshot(save_fn)  # 截取浏览器界面,保存图片
driver.quit()

执行以下命令就行:

python3 headless_jp_linux.py https://www.developzhe.com/


要安装下字体,不然文字有些显示不出来

在centos中执行:yum install bitmap-fonts bitmap-fonts-cjk

在ubuntu中执行:sudo apt-get install xfonts-wqy

wget http://fbi-fonts.oss-cn-shanghai.aliyuncs.com/msyh.ttf -O /home/admin/msyh.ttf 
yum install -y freetype freetype-devel fontconfig fontconfig-devel 
mkdir -p /usr/share/fonts/chinese/TrueType/ 
cp /home/admin/msyh.ttf /usr/share/fonts/chinese/TrueType/ 
fc-cache -fv