Имеется сайт с которого парсим информацию:
https://nsso.ru/check_policy/gop/inn он защищён с помощью рекапчи v3.
Написал код с использованием библиотеки от RuCaptcha:
import os
import time
import random
import pandas as pd
import undetected_chromedriver as uc
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from twocaptcha import TwoCaptcha
from bs4 import BeautifulSoup
class MainParser:
def __init__(self):
self.solver = TwoCaptcha('API_KEY')
self.driver = uc.Chrome()
self.excel_data = pd.read_excel("Список ИНН.xlsx")
self.excel_out_path = "out.xlsx"
self.inn_list = self.excel_data["ИНН"].tolist()
def bypass_captcha(self):
self.driver.get('https://nsso.ru/check_policy/gop/inn/')
token = self.driver.find_element(By.CSS_SELECTOR, ".g-recaptcha").get_attribute("data-sitekey")
solved_token = self.solver.recaptcha(
sitekey=token,
url='https://nsso.ru/check_policy/gop/inn/',
score=0.7,
version='v3'
)
element = self.driver.find_element(By.CSS_SELECTOR, "#g-recaptcha-response")
self.driver.execute_script("arguments[0].value = arguments[1];", element, solved_token['code'])
print(solved_token)
def search_by_inn(self, inn):
table_data = []
self.driver.find_element(By.CSS_SELECTOR, "#sDocNo_INN").send_keys(inn)
self.driver.find_element(By.CSS_SELECTOR, ".g-recaptcha").click() # После нажатия этой кнопки ошибка
def data_processing(self):
for inn in self.inn_list:
self.bypass_captcha()
self.search_by_inn(inn)
if __name__ == '__main__':
parser = MainParser()
parser.data_processing()
Ранее оно работало и без:
element = self.driver.find_element(By.CSS_SELECTOR, "#g-recaptcha-response")
self.driver.execute_script("arguments[0].value = arguments[1];", element, solved_token['code'])
Не знаю как так)
В качестве библиотеки для работы с браузером использую Undetected Chromedriver.
UPD: при нажатии кнопки отправки пишет: Защита от спама не пройдена
UPD: Добавил полный код и скрин: