Python使用Selenium包谷歌无头浏览器进行完整长截图

写在前面
想很简单,做很难,坚持更难,克服惰性。每天学一点,不会的就少一点。
养成习惯很重要,先从点赞开始吧!关注[程序员之道],前行道路不再迷茫!

不知道你有没有碰到过在开发过程中需要爬取网页,或者截取网页内容。这时候我们的selenium就要大显身手了!

准备工作

什么是无头浏览器呢,就是没有用户图形界面的Web浏览器,可以方便的通过程序进行控制或模拟用户的网页访问行为。这不就是天然为自动化测试准备的嘛。

下载无头浏览器驱动

下载链接
Python使用Selenium包谷歌无头浏览器进行完整长截图_第1张图片

可以根据自己的Chrome版本选择合适的无头浏览器驱动版本。一般来说,版本相近即可。

比如我的Chrome版本:
Python使用Selenium包谷歌无头浏览器进行完整长截图_第2张图片

驱动存储

将下载的驱动存储到自己的目录,比如/Users/Desktop/soft/chromedriver

代码实现

代码实现的主要逻辑非常简单。

  1. 设置无头浏览器驱动路径及参数。
  2. 获取网页内容。
  3. 执行script脚本,设置最大宽度及高度(如果没有此步骤,截图只是一部分)。
  4. 保存图片。

具体代码实现:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')

path = r'/Users/Desktop/soft/chromedriver'

def download(url, pngName):
    # 设置chrome驱动的路径及参数
    browser = webdriver.Chrome(executable_path=path,chrome_options=chrome_options)
    # 获取网页内容
    browser.get(url)
    # 通过执行脚本,设置滚动条到最大宽度及最大高度
    width = browser.execute_script("return document.documentElement.scrollWidth")
    height = browser.execute_script("return document.documentElement.scrollHeight")
    browser.set_window_size(width, height)
    # 是否需要超时等待
    # time.sleep(10)
    # 保存的截图名字
    browser.save_screenshot(pngName)
    browser.quit()
if __name__ == '__main__':
    url = 'https://www.w3school.com.cn/'
    pngPath = '/Users/Desktop/PycharmProjects/python-learn/image/'
    pngName = pngPath + "w3school.png"
    download(url, pngName)

截图效果

你可能感兴趣的:(开发经验)