import time from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.chrome.service import Service from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from tqdm import tqdm from selenium_stealth import stealth from fake_useragent import UserAgent def trans(original_text): # Start a Selenium driver options = webdriver.ChromeOptions() ua = UserAgent() options.add_argument(f"--user-agent={ua.random}") # 랜덤 user_agent 사용 options.add_argument("--disable-blink-features=AutomationControlled") options.add_argument('--ignore-certificate-errors') options.add_argument('--ssl-protocol=any') options.add_argument('--disable-cache') options.add_argument('--headless') driver = webdriver.Chrome(options=options) # selenium-stealth 설정 적용 stealth(driver, languages=["en-US", "en"], vendor="Google Inc.", platform="Win32", webgl_vendor="Intel Inc.", renderer="Intel Iris OpenGL Engine", fix_hairline=True, ) # Reach the deepL website deepl_url = 'https://www.deepl.com/ko/translator' # 한국어 driver.get(deepl_url) # Define text to translate # texts_to_translate = [ # 'Shuffle data after an epoch!', # 'StaleElementReferenceException: Message: stale element reference: element is not attached to the page document', # 'Hello python!', # 'Using Selenium and deepL to automate the translation!' # ] # for text_to_translate in tqdm(original_text): WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".min-h-0:nth-child(1) > div:nth-child(1)"))).send_keys(original_text) time.sleep(3) # Adjust sleep time based on network speed and response time # Improved wait for translation to appear try: WebDriverWait(driver, 10).until( lambda driver: driver.find_element(By.CSS_SELECTOR, '[data-testid="translator-target-input"]').text.strip() != "") translation_text = driver.find_element(By.CSS_SELECTOR, '[data-testid="translator-target-input"]') content = translation_text.text except Exception as e: print("Error fetching translation:", e) content = "Translation failed" # Display results # print('#' * 50) # print('Original :', original_text) # print('Translation :', content) # print('#' * 50) # Clear button # try: # # button = driver.find_element(By.CSS_SELECTOR, 'div.lmt__clear_text_button_wrapper button') # # button = driver.find_element(By.CSS_SELECTOR, '#translator-source-clear-button path') # button = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, '[data-testid="translator-source-clear-button"]'))) # button.click() # except Exception as e: # print("Error clicking clear button:", e) # Close the driver driver.quit() return content # result = trans("全铜芯卧式电机不锈钢底座厚") # print(f"입력 : 全铜芯卧式电机不锈钢底座厚") # print(f"결과 : {result}") # =========================================== # import time # from selenium import webdriver # from selenium.webdriver.chrome.options import Options # from selenium.webdriver.chrome.service import Service # from selenium.webdriver.common.by import By # from selenium.webdriver.support.ui import WebDriverWait # from selenium.webdriver.support import expected_conditions as EC # from tqdm import tqdm # from selenium_stealth import stealth # from fake_useragent import UserAgent # def trans(original_text): # # Start a Selenium driver # options = webdriver.ChromeOptions() # ua = UserAgent() # options.add_argument(f"--user-agent={ua.random}") # 랜덤 user_agent 사용 # options.add_argument("--disable-blink-features=AutomationControlled") # options.add_argument('--ignore-certificate-errors') # options.add_argument('--ssl-protocol=any') # options.add_argument('--disable-cache') # driver = webdriver.Chrome(options=options) # # selenium-stealth 설정 적용 # stealth(driver, # languages=["en-US", "en"], # vendor="Google Inc.", # platform="Win32", # webgl_vendor="Intel Inc.", # renderer="Intel Iris OpenGL Engine", # fix_hairline=True, # ) # # DeepL 웹사이트 접속 # deepl_url = 'https://www.deepl.com/ko/translator' # driver.get(deepl_url) # # 번역할 텍스트 입력 # input_area = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".min-h-0:nth-child(1) > div:nth-child(1)"))) # input_area.send_keys(original_text) # time.sleep(3) # 네트워크 속도에 따라 조정 # # 번역 결과 대기 및 추출 # try: # WebDriverWait(driver, 10).until( # lambda driver: driver.find_element(By.CSS_SELECTOR, '[data-testid="translator-target-input"]').text.strip() != "") # translation_text = driver.find_element(By.CSS_SELECTOR, '[data-testid="translator-target-input"]') # translated_content = translation_text.text # except Exception as e: # print("Error fetching translation:", e) # translated_content = "Translation failed" # # # Clear 버튼 클릭 # # try: # # clear_button = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, '[data-testid="translator-source-clear-button"]'))) # # clear_button.click() # # except Exception as e: # # print("Error clicking clear button:", e) # # 드라이버 종료 # driver.quit() # return translated_content # trans("微博登录")