Selenium не находит src картинки
Пытался получить сурс картинки, но при попытке в функции test выдаёт пустой массив.
import cv2
import time
import base64
import pickle
import pytesseract
from PIL import Image
from io import BytesIO
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
def resolver(captcha):
data = captcha
data = data.replace('data:image/jpeg;base64,', '')
im = Image.open(BytesIO(base64.b64decode(data)))
im.save('captcha.png', 'PNG')
img = cv2.imread(im)
img = cv2.resize(img, None, fx=9, fy=9)
task = pytesseract.image_to_string(img, config='-c tessedit_char_whitelist=0123456789+?')
result = eval(task[:-1])
return result
driver = webdriver.Chrome('chromedriver.exe')
driver.get('https://lolz.guru/forums/contests/page-2')
cookies = pickle.load(open("cookies.pkl", "rb"))
driver.add_cookie({"name": "xf_feed_custom_order", "value": "post_date"})
for cookie in cookies:
driver.add_cookie(cookie)
driver.refresh()
time.sleep(3)
def test():
driver.refresh()
a = driver.find_elements_by_xpath("//div[contains(@class, 'discussionListItem unread prefix75 ')]/div/a")
l = len(a)
if l == 0:
time.sleep(1800)
test()
else:
for i in range(l):
url = a[i].get_attribute('href')
driver.execute_script("window.open('"+url+"', '_')")
time.sleep(2)
cap = driver.find_elements_by_xpath('//*[@id="Captcha"]/div/label/img')
print(cap) # - Выводит []
cap = cap.get_attribute('src')
ans = driver.find_element_by_name('captcha_question_answer')
ans.send_keys(resolver(cap))
test()
#for a in driver.find_elements_by_xpath("//div[contains(@class, 'discussionListItem unread prefix75 ')]/div/a"):
# a.send_keys(Keys.CONTROL + 't')
# time.sleep(0.1)
# driver.execute_script("window.open('"+a.get_attribute('href')+"', 'new window')")
import cv2
import time
import base64
import pickle
import pytesseract
from PIL import Image
from io import BytesIO
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
def resolver(captcha):
data = captcha
data = data.replace('data:image/jpeg;base64,', '')
im = Image.open(BytesIO(base64.b64decode(data)))
im.save('captcha.png', 'PNG')
img = cv2.imread(im)
img = cv2.resize(img, None, fx=9, fy=9)
task = pytesseract.image_to_string(img, config='-c tessedit_char_whitelist=0123456789+?')
result = eval(task[:-1])
return result
driver = webdriver.Chrome('chromedriver.exe')
driver.get('https://lolz.guru/forums/contests/page-2')
cookies = pickle.load(open("cookies.pkl", "rb"))
driver.add_cookie({"name": "xf_feed_custom_order", "value": "post_date"})
for cookie in cookies:
driver.add_cookie(cookie)
driver.refresh()
time.sleep(3)
def test():
driver.refresh()
a = driver.find_elements_by_xpath("//div[contains(@class, 'discussionListItem unread prefix75 ')]/div/a")
l = len(a)
if l == 0:
time.sleep(1800)
test()
else:
for i in range(l):
url = a[i].get_attribute('href')
driver.execute_script("window.open('"+url+"', '_')")
time.sleep(2)
cap = driver.find_elements_by_xpath('//*[@id="Captcha"]/div/label/img')
print(cap) # - Выводит []
cap = cap.get_attribute('src')
ans = driver.find_element_by_name('captcha_question_answer')
ans.send_keys(resolver(cap))
test()
#for a in driver.find_elements_by_xpath("//div[contains(@class, 'discussionListItem unread prefix75 ')]/div/a"):
# a.send_keys(Keys.CONTROL + 't')
# time.sleep(0.1)
# driver.execute_script("window.open('"+a.get_attribute('href')+"', 'new window')")
Пример формы:
<div class="ContestCaptcha" data-refresh-url="threads/1790699/captcha/update">
<div class="captchaBlock">
<div id="Captcha" data-source="misc/captcha">
<div class="ddText"><label for="106e7592132521788ed1e1dacccb5f28092edc52"><img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD//gA+Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcgSlBFRyB2NjIpLCBkZWZhdWx0IHF1YWxpdHkK/9sAQwAIBgYHBgUIBwcHCQkICgwUDQwLCwwZEhMPFB0aHx4dGhwcICQuJyAiLCMcHCg3KSwwMTQ0NB8nOT04MjwuMzQy/9sAQwEJCQkMCwwYDQ0YMiEcITIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy/8AAEQgAHgBkAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A8morqbrS9HHw3t9VtEna/wD7RFvPNN8o/wBWWKqoJG0fLyeSc9BxU3hiz0zXLu3sP7Gg8pYSLq4e9f7Sx2sxeJFPzEY4QRt0AJ5zQByFFPlEYmcQszxBjsZ12sR2JAJwfbJ+tbfhbwreeJtThgRJ4bR2ZXvFgLxxkKWwTwMngde4oAwaKsXlheadMIb60ntZWXcEnjKMR0zgjpwfyp+nXFnbXDS3lj9tQRsEiMpjXeRwW28kDrgFc8c+oBUorrNa0vS7Oy0S8urb7I91I32iLTpfPieFXwWSRmYCTqNoZh0J25wX39ro0/hnUdTXTF01WuVTSCJJN9yoYiQMrOwIVSuWGBu4z2oA5CiiigAooooAKKKKAOh/t/Tv+ER/sH+zbr/X/avP+2L/AK7y9mdvl/c77c5/2qZp2taTp81leLojG/tFBVheMIXlXJWRkKlsg7SQHAO3oAcVg0UATXVzNe3k93cPvnnkaSRsAbmY5JwOOpq3oes3Hh/WYNUtEieeDdtWUEqdylTnBB6E96zqKACrenXFnb3DNfWP2yBo2QoJTGykjhlYZGQfUEdePSpRQBs6hrkc2iwaNp9o1rYRzG4dZZfNklmIxuLbVAAXAAAHcnJ6V9W1JNS+w7IZYvs1pHbt5lw0u4rn5hu+4Dn7o4Has6igAooooAKKKKACiiigD//Z"></label></div>
<input type="text" name="captcha_question_answer" id="106e7592132521788ed1e1dacccb5f28092edc52" value="" placeholder="Введите ответ" class="textCtrl OptOut">
<input type="hidden" name="captcha_question_hash" value="106e7592132521788ed1e1dacccb5f28092edc52">
</div>
</div>
</div>