selenium - 截图下载图片

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()

 

posted @ 2019-09-24 16:26  孔辉  阅读(668)  评论(0编辑  收藏  举报