Selenium-截图
在selenium中,截取网页的图片有多种方式,这里简单介绍三种截图:
- 截整个网页。
- 截取可见区域。
- 截取指定区域,即截取网页中的指定图片,如截取验证码部分的图片。
1、截取当前可见页面的图
#!/usr/bin/env python # -*- coding: utf-8 -*- __author__ = 'tian' __data__ = '2021/2/24 17:06' import time from selenium import webdriver driver = webdriver.Chrome() try: time.sleep(2) driver.get("https://pythonav.com/login/") driver.save_screenshot("a.png") # 保存当前url页面屏幕截图,保存图片的类型必须是.png,命名a.png的图片 print(driver.title) # 百度一下,你就知道 except Exception as error: print("报错信息:{0}".format(error)) finally: time.sleep(5) driver.quit()
2、截取指定区域图
#!/usr/bin/env python # -*- coding: utf-8 -*- __author__ = 'tian' __data__ = '2021/2/24 17:06' import time from selenium import webdriver driver = webdriver.Chrome() driver.implicitly_wait(10) driver.maximize_window() full_img = "./a.png" code_img = "./b.png" try: time.sleep(2) driver.get("https://pythonav.com/login/") driver.save_screenshot(full_img) # 截取可见区域的图片 imageCode = driver.find_element_by_id("image_code") # 定位验证码图片 imageCode.screenshot(code_img) # 利用imageCode对象截取验证码区域的图片 except Exception as error: print("报错信息:{0}".format(error)) finally: time.sleep(5) driver.quit()
3、截取整个网页的图
需求:网页内容过多时,需要通过滚动条下拉查看。如何截取整个网页的图片呢?
通过无头浏览器PhantomJS来截取:
# 网页需要下拉浏览器滚动条才能查看完毕,截取整个长网页的图 from selenium import webdriver driver = webdriver.PhantomJS(executable_path=r"C:\Python\Python37\Scripts\phantomjs\bin\phantomjs.exe") # 无头浏览器安装路径 driver.implicitly_wait(time_to_wait=10) driver.get("https://pythonav.com/project/detail/1/") driver.save_screenshot("a.png") driver.quit()