translate.py 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. # -*- coding: utf-8 -*-
  2. # @Author: wangkun
  3. # @Time: 2023/2/8
  4. import time
  5. from selenium import webdriver
  6. from selenium.webdriver.chrome.service import Service
  7. from selenium.webdriver.common.by import By
  8. from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
  9. class Translate:
  10. @classmethod
  11. def google_translate(cls, strs, machine):
  12. # 打印请求配置
  13. ca = DesiredCapabilities.CHROME
  14. ca["goog:loggingPrefs"] = {"performance": "ALL"}
  15. # 不打开浏览器运行
  16. chrome_options = webdriver.ChromeOptions()
  17. chrome_options.add_argument("--headless")
  18. chrome_options.add_argument('--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36')
  19. chrome_options.add_argument("--no-sandbox")
  20. # driver初始化
  21. if machine == 'aliyun' or machine == 'aliyun_hk':
  22. driver = webdriver.Chrome(desired_capabilities=ca, options=chrome_options)
  23. elif machine == 'macpro':
  24. driver = webdriver.Chrome(desired_capabilities=ca, options=chrome_options, service=Service('/Users/lieyunye/Downloads/chromedriver_v86/chromedriver'))
  25. elif machine == 'macair':
  26. driver = webdriver.Chrome(desired_capabilities=ca, options=chrome_options, service=Service('/Users/piaoquan/Downloads/chromedriver'))
  27. else:
  28. driver = webdriver.Chrome(desired_capabilities=ca, options=chrome_options, service=Service('/Users/wangkun/Downloads/chromedriver/chromedriver_v110/chromedriver'))
  29. driver.implicitly_wait(10)
  30. # url = 'https://fanyi.baidu.com/?aldtype=16047#auto/zh' # 百度翻译
  31. url = 'https://translate.google.de/?hl=zh-CN' # 谷歌翻译
  32. driver.get(url)
  33. time.sleep(3)
  34. # driver.save_screenshot('./1.png')
  35. accept_btns = driver.find_elements(By.XPATH, '//span[text()="全部接受"]')
  36. accept_btns_eng = driver.find_elements(By.XPATH, '//span[text()="Accept all"]')
  37. if len(accept_btns) != 0:
  38. accept_btns[0].click()
  39. time.sleep(2)
  40. elif len(accept_btns_eng) != 0:
  41. accept_btns_eng[0].click()
  42. time.sleep(2)
  43. textarea = driver.find_element(By.XPATH, '//textarea[@class="er8xn"]')
  44. textarea.send_keys(strs)
  45. time.sleep(5)
  46. translate_list = driver.find_elements(By.XPATH, '//span[@class="ryNqvb"]')
  47. translate_word_list = []
  48. for text in translate_list:
  49. word = text.get_attribute("innerHTML")
  50. translate_word_list.append(word)
  51. translate_word = "".join(translate_word_list)
  52. time.sleep(1)
  53. driver.quit()
  54. return translate_word
  55. @classmethod
  56. def baidu_translate(cls, strs, machine):
  57. # 打印请求配置
  58. ca = DesiredCapabilities.CHROME
  59. ca["goog:loggingPrefs"] = {"performance": "ALL"}
  60. # 不打开浏览器运行
  61. chrome_options = webdriver.ChromeOptions()
  62. chrome_options.add_argument("--headless")
  63. chrome_options.add_argument('--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36')
  64. chrome_options.add_argument("--no-sandbox")
  65. # driver初始化
  66. if machine == 'aliyun' or machine == 'aliyun_hk':
  67. driver = webdriver.Chrome(desired_capabilities=ca, options=chrome_options)
  68. elif machine == 'macpro':
  69. driver = webdriver.Chrome(desired_capabilities=ca, options=chrome_options, service=Service('/Users/lieyunye/Downloads/chromedriver_v86/chromedriver'))
  70. elif machine == 'macair':
  71. driver = webdriver.Chrome(desired_capabilities=ca, options=chrome_options, service=Service('/Users/piaoquan/Downloads/chromedriver'))
  72. else:
  73. driver = webdriver.Chrome(desired_capabilities=ca, options=chrome_options, service=Service('/Users/wangkun/Downloads/chromedriver/chromedriver_v110/chromedriver'))
  74. # driver.implicitly_wait(10)
  75. url = 'https://fanyi.baidu.com/?aldtype=16047#auto/zh' # 百度翻译
  76. # url = 'https://translate.google.de/?hl=zh-CN' # 谷歌翻译
  77. driver.get(url)
  78. time.sleep(1)
  79. # driver.save_screenshot('./1.png')
  80. close_btns = driver.find_elements(By.XPATH, '//span[@class="app-guide-close"]')
  81. accept_btns = driver.find_elements(By.XPATH, '//span[text()="全部接受"]')
  82. accept_btns_eng = driver.find_elements(By.XPATH, '//span[text()="Accept all"]')
  83. if len(close_btns) != 0:
  84. close_btns[0].click()
  85. time.sleep(2)
  86. elif len(accept_btns) != 0:
  87. accept_btns[0].click()
  88. time.sleep(2)
  89. elif len(accept_btns_eng) != 0:
  90. accept_btns_eng[0].click()
  91. time.sleep(2)
  92. textarea = driver.find_element(By.XPATH, '//textarea[@id="baidu_translate_input"]')
  93. textarea.send_keys(strs)
  94. time.sleep(5)
  95. translate_list = driver.find_elements(By.XPATH, '//p[@class="ordinary-output target-output clearfix"]')
  96. translate_word_list = []
  97. for text in translate_list:
  98. word = text.find_elements(By.TAG_NAME, 'span')
  99. for word_text in word:
  100. word = word_text.text
  101. translate_word_list.append(word)
  102. # print(word)
  103. translate_word = "".join(translate_word_list)
  104. # print(translate_word)
  105. time.sleep(1)
  106. driver.quit()
  107. return translate_word
  108. @classmethod
  109. def is_contains_chinese(cls, strs):
  110. """
  111. 检查语句中是否包含中文字符
  112. :param strs: 需要查询的句子
  113. :return: 包含:True,不包含:False
  114. """
  115. for _char in strs:
  116. if '\u4e00' <= _char <= '\u9fa5':
  117. return True
  118. return False
  119. @classmethod
  120. def is_all_chinese(cls, strs):
  121. """
  122. 检查语句中是否全是中文字符,有标点符号也会返回 False
  123. :param strs:需要查询的句子
  124. :return:包含:True,不包含:False
  125. """
  126. for _char in strs:
  127. if not '\u4e00' <= _char <= '\u9fa5':
  128. return False
  129. return True
  130. if __name__ == "__main__":
  131. # is_contains_chinese = Translate.is_contains_chinese('SENSATIONAL Singer Wins the GROUP GOLDEN BUZZER with a STUNNING Audition! | Got Talent Global')
  132. # print(is_contains_chinese)
  133. # # is_all_chinese = Translate.is_all_chinese('SENSATIONAL Singer Wins the GROUP GOLDEN BUZZER with a STUNNING Audition!')
  134. # is_all_chinese = Translate.is_all_chinese('啊啊啊')
  135. # print(is_all_chinese)
  136. strs1 = 'SENSATIONAL Singer Wins the GROUP GOLDEN BUZZER with a STUNNING Audition! | Got Talent Global'
  137. # Translate.google_translate(strs1, 'local')
  138. Translate.baidu_translate(strs1, 'local')
  139. pass