161 lines
5.9 KiB
Python
161 lines
5.9 KiB
Python
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
|
|
import logging
|
|
|
|
# 로거 인스턴스 가져오기
|
|
logger = logging.getLogger('default_logger')
|
|
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:
|
|
logger.debug("Error fetching translation:", e)
|
|
content = "Translation failed"
|
|
|
|
# Display results
|
|
# logger.debug('#' * 50)
|
|
# logger.debug('Original :', original_text)
|
|
# logger.debug('Translation :', content)
|
|
# logger.debug('#' * 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:
|
|
# logger.debug("Error clicking clear button:", e)
|
|
|
|
# Close the driver
|
|
driver.quit()
|
|
|
|
return content
|
|
|
|
result = trans("全铜芯卧式电机不锈钢底座厚")
|
|
logger.debug(f"입력 : 全铜芯卧式电机不锈钢底座厚")
|
|
logger.debug(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:
|
|
# logger.debug("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:
|
|
# # logger.debug("Error clicking clear button:", e)
|
|
|
|
# # 드라이버 종료
|
|
# driver.quit()
|
|
|
|
# return translated_content
|
|
|
|
# trans("微博登录") |