首页
文章
代码笔记
资源分享
生活随笔
AI相册
工具箱
归档
友链
关于
微信公众号
欢迎关注,一起学习!
搜索
搜索内容
×
文章详情
Selenium制作翻译工具
Python
Selenium
#### 1. Selenium获取有道翻译结果 使用Selenium制作翻译工具,不会安装请参考这篇文章 [Selenium安装](https://tuyuex.com/details/14.html) [下载对应Chrome浏览器版本的“chromedriver.exe”](https://googlechromelabs.github.io/chrome-for-testing/#stable) 显示浏览器界面:注释第27行。 #### 2. 代码示例: ```python # -*- coding: utf-8 -*- import os from time import sleep import emoji from selenium import webdriver 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 base_dir = os.path.abspath(os.path.dirname(os.getcwd())) # 项目根目录 class SeleniumSpider: def __init__(self): print('正在启动Chrome浏览器...') self.browser = None self.initBrowser() """初始化浏览器""" def initBrowser(self): # 使用headless无界面浏览器模式 options = webdriver.ChromeOptions() options.add_argument('--headless') # 增加无界面选项 options.add_argument('--disable-gpu') # 如果不加这个选项,有时定位会出现问题,谷歌文档提到需要加上这个属性来规避bug options.add_experimental_option('excludeSwitches', ['enable-automation']) # 防止被网站识别 # 启动浏览器 executable_path = os.path.join(base_dir, 'study', 'chromedriver.exe') # 设置chromedriver.exe browser = webdriver.Chrome(service=Service(executable_path), options=options) browser.implicitly_wait(20) # 隐性等待 # 利用stealth.min.js防止被网站识别 stealth_js_path = os.path.join(base_dir, 'study', 'stealth.min.js') with open(stealth_js_path) as f: js = f.read() browser.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": js}) # browser.maximize_window() # 将浏览器最大化显示 self.browser = browser """有道翻译""" def Youdaofanyi(self, keywords: str): mainUrl = 'https://fanyi.youdao.com/index.html#/' self.browser.get(mainUrl) # 1.输入翻译原文 fanyi_input = WebDriverWait(self.browser, 10).until( # 每隔 0.5s 检查一次(默认就是 0.5s), 最多等待 10 秒 EC.visibility_of_element_located( (By.XPATH, '//*[@id="js_fanyi_input"]') ) ) fanyi_input.clear() keywords = emoji.demojize(keywords) fanyi_input.send_keys(keywords) sleep(2) # 强制等待两秒获取结果 # 2.输出翻译结果 fanyi_output = WebDriverWait(self.browser, 10).until( # 每隔 0.5s 检查一次(默认就是 0.5s), 最多等待 10 秒 EC.visibility_of_all_elements_located( (By.XPATH, '//div[@id="js_fanyi_output_resultOutput"]/p//span') ) ) fanyi_output_result = '' for output in fanyi_output: fanyi_output_result += output.text print('原文:', keywords) print('翻译:', fanyi_output_result) return fanyi_output_result def __del__(self): print('正在关闭Chrome浏览器...') self.browser.quit() if __name__ == '__main__': ss = SeleniumSpider() ss.Youdaofanyi('我爱西安') ``` #### 3. 控制台结果 ```plaintext 正在启动Chrome浏览器... 原文: 我爱西安 翻译: I love Xi 'an 正在关闭Chrome浏览器... ```
评论 (${comments_count})
评论
Loading...
${item.comment_time}
${item.nickname}
${c1_item.comment_time}
${c1_item.nickname}
${c1_item.reply_nickname}
${c1_item.content}
${comment_header_label}
×
邮件提醒
有回复时邮件通知我
${comment_header_label}