2301_77947494 2023-09-19 01:09 采纳率: 16.7%
浏览 5

Python 获取b站截取验证码大小不对

逻辑:想要获取站验证码图片,代码是先全屏截取图片 然后通过获取验证码大小,从全屏图片上裁剪验证图片,执行代码后发现验证码图片裁剪位置不对 以下是代码及截取图片

img

img

img


完整代码


import datetime
import os
import json
import time
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ES
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver
from PIL import Image

#
# class Bilibili_auto:
#
#     def __init__(self):
#         pass
#
#     def Initiate_chrome(self):
#         a = 'd1d'
driver = webdriver.Chrome()
driver.get('https://www.bilibili.com/')
driver.maximize_window()
wait = WebDriverWait(driver,10)
ClickSignIn = wait.until(ES.presence_of_element_located((By.XPATH,'//*[@id="i_cecream"]/div[2]/div[1]/div[1]/ul[2]/li[1]/li/div[1]/div')))
ActionChains(driver).click(ClickSignIn).perform()
Account = wait.until(ES.presence_of_element_located((By.XPATH,'//form[@class="tab__form"]/div[1]/input')))
ActionChains(driver).click(Account).send_keys('13147035668').perform()
Password = wait.until(ES.presence_of_element_located((By.XPATH, '//form[@class="tab__form"]/div[3]/input')))
ActionChains(driver).click(Password).send_keys('aaaaaa').perform()
Login = wait.until(ES.presence_of_element_located((By.XPATH,'//div[@class="btn_wp"]/div[2]')))
ActionChains(driver).click(Login).perform()
# BigPicture = wait.until(ES.presence_of_element_located((By.XPATH,'//div[@class="geetest_panel geetest_wind"][2]')))
time.sleep(10)
#全屏截图
driver.get_screenshot_as_png()
driver.save_screenshot('bigpicture.png')
#验证码对象
Minpicture = wait.until(ES.presence_of_element_located((By.XPATH,'//div[@class="geetest_widget"]')))
loction = Minpicture.location
print(loction)
size = Minpicture.size
print(size)
#裁剪验证码大小
left,top,right,bottom = loction['x'],loction['y'],(loction['x']+size['width']),(loction['y']+size['height'])
BIG_screenshot_OPEN = Image.open('bigpicture.png')
Minpicture_screenshot = BIG_screenshot_OPEN.crop((left,top,right,bottom))
Minpicture_screenshot.save('minpicture_screenshot.png')









# a= Bilibili_auto()
# 

求解答疑惑 感谢

  • 写回答

2条回答 默认 最新

  • cjh4312 2023-09-19 08:39
    关注

    为什么要先截取全屏呢,再找验证码位置呢?这个验证码的图片可以直接从网络就获取到了。

    评论

报告相同问题?

问题事件

  • 创建了问题 9月19日

悬赏问题

  • ¥15 有偿求苍穹外卖环境配置
  • ¥15 代码在keil5里变成了这样怎么办啊,文件图像也变了,
  • ¥20 Ue4.26打包win64bit报错,如何解决?(语言-c++)
  • ¥15 clousx6整点报时指令怎么写
  • ¥30 远程帮我安装软件及库文件
  • ¥15 关于#自动化#的问题:如何通过电脑控制多相机同步拍照或摄影(相机或者摄影模组数量大于60),并将所有采集的照片或视频以一定编码规则存放至规定电脑文件夹内
  • ¥20 深信服vpn-2050这台设备如何配置才能成功联网?
  • ¥15 Arduino的wifi连接,如何关闭低功耗模式?
  • ¥15 Android studio 无法定位adb是什么问题?
  • ¥15 C#连接不上服务器,