selenium - 截图下载图片

本文介绍使用Selenium和Python实现自动化浏览器操作,包括最大化窗口、滚动页面、点击元素及保存全屏截图。进一步地,通过定位验证码图片位置,进行截图并保存,为后续的验证码识别提供基础。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

from selenium import webdriver
from selenium.webdriver import ChromeOptions
from time import sleep
from PIL import Image
import requests


class Get_ahth():

    """
    将验证码图片下到本地
    """
    def __init__(self):
        self.option = ChromeOptions()
        self.option.add_experimental_option('excludeSwitches', ['enable-automation'])
        self.bro = webdriver.Chrome(executable_path=r'D:\chromedriver', chrome_options=self.option)
        self.bro.maximize_window()
        self.url='http://www.cn200.cc/member/my.php?mid=5&action=add'

    def get_img_all(self):
        bro = self.bro
        bro.get(self.url)
        js = "var q=document.documentElement.scrollTop=10000"
        bro.execute_script(js)
        bro.find_elements_by_id('answer')[0].click()
        bro.find_elements_by_id('captcha')[0].click()
        sleep(5)
        bro.save_screenshot(r'photo.png')  # 一次截图:形成全图

    def get_img_num(self):
        bro = self.bro
        img_yz_2 = bro.find_elements_by_id('question')[0]

        left_2 = img_yz_2.location['x']  # 区块截图左上角在网页中的x坐标
        top_2 = 778  # 区块截图左上角在网页中的y坐标
        right_2 = left_2 + img_yz_2.size['width'] - 65  # 区块截图右下角在网页中的x坐标
        bottom_2 = top_2 + img_yz_2.size['height'] + 14  # 区块截图右下角在网页中的y坐标
        print({"left": left_2, "top": top_2, "right": right_2, "bottom ": bottom_2})
        picture = Image.open(r'photo.png')
        picture = picture.crop((left_2, top_2, right_2, bottom_2))  # 二次截图:形成区块截图
        picture.save(r'photo3.png')

    def get_img_img(self):
        bro = self.bro
        img_yz = bro.find_elements_by_id('captchapng')[0]
        left = img_yz.location['x']  # 区块截图左上角在网页中的x坐标
        top = 835  # 区块截图左上角在网页中的y坐标
        right = left + img_yz.size['width']  # 区块截图右下角在网页中的x坐标
        bottom = top + img_yz.size['height'] + 14  # 区块截图右下角在网页中的y坐标
        print({"left": left, "top": top, "right": right, "bottom ": bottom})
        picture = Image.open(r'photo.png')
        picture = picture.crop((left, top, right, bottom))  # 二次截图:形成区块截图
        picture.save(r'photo2.png')

    def close(self):
        self.bro.quit()

    def main(self):
        self.get_img_all()
        self.get_img_num()
        self.get_img_img()
        self.close()

gg = Get_ahth()
gg.main()

 

转载于:https://www.cnblogs.com/konghui/p/11579043.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值