获取的图片问题
没有滑动滑块时,含有缺口的图片就存在,获取的两张图是一样的,无法找出缺口的位置,有没有其他方法获取没有缺口的图片,或者别的方法破解的,求救
没有滑动滑块时,含有缺口的图片就存在,获取的两张图是一样的,无法找出缺口的位置,有没有其他方法获取没有缺口的图片,或者别的方法破解的,求救
我也是遇到这个问题,请问解决了吗,能否指教一下
好像要用到js逆向什么的,我也不会,听说崔大的爬虫要出第二版,等等看吧
| | dongxuxiang1994 | | [email protected] | 签名由网易邮箱大师定制 在2019年1月11日 09:19,shenzijing[email protected] 写道:
没有滑动滑块时,含有缺口的图片就存在,获取的两张图是一样的,无法找出缺口的位置,有没有其他方法获取没有缺口的图片,或者别的方法破解的,求救
我也是遇到这个问题,请问解决了吗,能否指教一下
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or mute the thread.
没有滑动滑块时,含有缺口的图片就存在,获取的两张图是一样的,无法找出缺口的位置,有没有其他方法获取没有缺口的图片,或者别的方法破解的,求救
调用geettest时有3张图片传回来,都是
slider_img = browser.find_element(By.XPATH, '//*[@class="geetest_canvas_slice geetest_absolute"]').screenshot('slider.png')
gap_img = browser.find_element(By.XPATH, '//*[@class="geetest_canvas_bg geetest_absolute"]').screenshot('gap.png')
full_img = (browser.find_element(By.XPATH, '//*[@class="geetest_canvas_fullbg geetest_fade geetest_absolute"]').screenshot('full.png'))
当然,请注意screenshot的的用法,可能会拍到元素遮挡的图片,需要selenium执行js脚本来去除
browser.execute_script("""
var element = arguments[0];
element.parentNode.removeChild(element);
""", slider_element)
以下是我的获取图片的完整代码
import cv2
import numpy as np
from selenium import webdriver
import os
import time
from PIL import Image, ImageChops
from selenium.webdriver.common.by import By
# chrome_path = 'C:/Program Files/Google/Chrome/Application/chromedriver.exe'
# 1.访问网址
browser = webdriver.Chrome()
url = "https://passport.haodf.com/nusercenter/showlogin"
browser.get(url) # 访问网址
time.sleep(2)
tel_input = browser.find_element(By.XPATH, '//*[@placeholder="请输入手机号"]')
tel_input.send_keys("13111111111")
# TODO 输入手机号
send_code = browser.find_element(By.XPATH, '//*[@class="sendCode"]')
send_code.click()
# TODO 点击按钮
# TODO 接下来等2秒,就会出现图片验证
print(f"恭喜你到了这一步")
time.sleep(5)
print(f"恭喜你出现了验证")
# TODO 定位到class="geetest_canvas_slice geetest_absolute",然后获取滑块图片
# TODO 定位到class="geetest_canvas_fullbg geetest_fade geetest_absolute",设置style="opacity: 1;",然后获取原始背景图片
# TODO 定位到class="geetest_canvas_bg geetest_absolute",然后获取缺口背景图片
# 3.获取图片(层级:滑块>缺口背景>满背景)
# ------------------删除滑块图片
slider_element = browser.find_element(By.XPATH, '//*[@class="geetest_canvas_slice geetest_absolute"]')
browser.execute_script("""
var element = arguments[0];
element.parentNode.removeChild(element);
""", slider_element)
# ------------------删除缺口图片
gap_img_element = browser.find_element(By.XPATH, '//*[@class="geetest_canvas_bg geetest_absolute"]')
gap_img = gap_img_element.screenshot('gap.png')
browser.execute_script("""
var element = arguments[0];
element.parentNode.removeChild(element);
""", gap_img_element)
# ------------------获取完整图片
# ------------------修改 canvas 元素的 style 属性
result = browser.execute_script("""
var canvasElement = document.querySelector('.geetest_canvas_fullbg.geetest_fade.geetest_absolute');
if (canvasElement) {
canvasElement.setAttribute('style', 'opacity: 1;');
return 'set success';
}else {
return 'style element_not_found';
}
""")
print(f"元素result: {result}")
full_img = (browser.find_element(By.XPATH, '//*[@class="geetest_canvas_fullbg geetest_fade geetest_absolute"]')
.screenshot('full.png'))
# -----------------TODO 把他们删除的的都加回来
# ------------------添加滑块和缺口图片
browser.execute_script("""
var canvasElement = document.createElement("canvas");
canvasElement.className = "geetest_canvas_bg geetest_absolute";
canvasElement.height = 160;
canvasElement.width = 260;
var targetDiv = document.querySelector('.geetest_slicebg.geetest_absolute');
if (targetDiv) {
targetDiv.appendChild(canvasElement);
}
""")
browser.execute_script("""
var canvasElement = document.createElement("canvas");
canvasElement.className = "geetest_canvas_slice geetest_absolute";
canvasElement.height = 160;
canvasElement.width = 260;
canvasElement.style = "opacity: 1; display: block"
var targetDiv = document.querySelector('.geetest_slicebg.geetest_absolute');
if (targetDiv) {
targetDiv.appendChild(canvasElement);
}
""")