蜘蛛吧,新站快速收录,高质量网站外链,吸引各种蜘蛛! 免费收录 快速收录 最新收录 网站地图 TAGS
首页/ > 文章资讯/ > 编程

python selenium + webdriver 给网站截图

2024-03-08 17:02:57   编程   0
【导读】:利用给网站截图获取网页截图网址截图文件路径设置浏览器选项添加无头模式参数无头模式不显示浏览器界面设置浏览器窗口大小设置浏览器窗口大小为禁用加速禁用加速提升性能禁用共享内存禁用共享内存避免占用过多系统资源禁用沙盒禁用沙盒提高安全性设置设置模拟...本文地址:/news/1958.html

python 利用selenium + webdriver 给网站截图

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from PIL import Image, ImageFont, ImageDraw
import base64
import io
import os
def get_screenshot(url):
    """
    获取网页截图
    Args:
        url: 网址
    Returns:
        截图文件路径
    """
    # 设置浏览器选项
    options = Options()
    # 添加无头模式参数
    options.add_argument('--headless')    # 无头模式,不显示浏览器界面
    # 设置浏览器窗口大小
    options.add_argument('--window-size=1280,850')    # 设置浏览器窗口大小为 1280 x 850
    # 禁用 GPU 加速
    options.add_argument('--disable-gpu')    # 禁用 GPU 加速,提升性能
    # 禁用共享内存
    options.add_argument('--disable-dev-shm-usage')    # 禁用共享内存,避免占用过多系统资源
    # 禁用沙盒
    options.add_argument('--no-sandbox')    # 禁用沙盒,提高安全性
    # 设置 User-Agent
    options.add_argument('--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.84 Safari/537.36')    # 设置 User-Agent,模拟浏览器类型
    options.add_experimental_option("excludeSwitches", ["enable-popup-blocking"])
    # 创建 ChromeDriver 可执行文件的路径
    chrome_driver_path = "C:/chromedriver/chromedriver.exe"    # 请根据实际情况修改路径
    # 创建 Service 对象
    service = Service(executable_path=chrome_driver_path)    # 创建 Service 对象,传入 ChromeDriver 可执行文件路径
    # 创建浏览器驱动
    driver = webdriver.Chrome(service=service, options=options)    # 创建 Chrome 浏览器驱动,并传入 Service 对象和 Options 对象
    # 设置超时时间
    driver.set_page_load_timeout(20)    # 设置页面加载超时时间为 20 秒
    driver.execute_script("window.open = function(){}")
    # 处理网址,去除特殊字符
    filename = ''.join(c for c in url.replace('http://', '').replace('https://', '') if c.isalnum() or c in ['-', '_', '.'])    # 处理网址,去除特殊字符,并替换 http 和 https
    # 打开网页
    try:
        driver.get(url)    # 打开网页
    except TimeoutException:
        print('网页打开超时')    # 如果网页打开超时,则打印提示信息
        return None    # 返回 None
    try:
        # 获取网页全屏截图
        screenshot_base64 = driver.get_screenshot_as_base64()
        # 将 base64 字符串解码为二进制数据
        screenshot_bytes = io.BytesIO(base64.b64decode(screenshot_base64))
        # 将二进制数据转换为 JPG 图片
        image = Image.open(screenshot_bytes)
        image = image.convert('RGB')
        
        # 保存 JPG 图片 (jpg格式相对节省空间)
        #image.save(f'{filename}.jpg', quality=80)
        image.save(f'{filename}.jpg')
    finally:
        # 关闭浏览器
        driver.quit()    # 确保浏览器关闭
    # 返回截图文件路径
    return f'{filename}.jpg'
# 测试
url = "http://www.baidu.com"
screenshot_path = get_screenshot(url)
if screenshot_path is not None:
    print(f'截图已保存至 {screenshot_path}')
else:
    print('截图失败')


标签:

版权声明:

1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。

2、本站仅提供信息发布平台,不承担相关法律责任。

3、若侵犯您的版权或隐私,请联系本站管理员删除。

4、文章来源:来自于网络收集。

网站声明:本站所有资料取之于互联网,任何公司或个人参考使用本资料请自辨真伪、后果自负,本站不承担任何责任。
©2017-2022 蜘蛛吧  https://www.zhizhuba.com/ ICP备案号:冀ICP备19007129号-5