51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 699|回复: 0
打印 上一主题 下一主题

谷歌翻译也可以用Python+selenium实现

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-9-14 16:37:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 草帽路飞UU 于 2022-9-16 16:58 编辑

一、需求分析  

       我们知道,网上有很多的翻译平台,比如:Google翻译、百度翻译、有道翻译、微软翻译等等。本次我们来使用selenium模块实现对Google翻译的爬取的实现。

  我们需要上传一个文件给Google翻译,然后再将Google翻译的结果保存在一个文件之中。

  当然了,我们是全自动化的处理了啦。也就是说我们使用程序自动的进行这些翻译的操作

  二、Google 翻译介绍

  显然,如果你想要访问Google翻译是需要一些魔法知识的,这个不方便在这里叙述,所以如果有需要的话可以私信我,我可以私下教你如何处理了啦。

  Google翻译有两种功能,第一种是直接翻译文本,第二种是翻译一个文件里面的内容:



这是直接翻译文本的界面。



这是翻译一个文件中的内容的界面。

  我们本次使用的是第二种方法,即就是上传一个文件让它来翻译。当然了,我们前面说了我们是使用程序来进行自动化的操作了啦。


  三、网页界面的分析(网页检查)


  我们打开网页检查的分析界面:




然后,我们知道需要首先点击文档的按钮,然后点击选择文件的按钮:

  1、点击文档按钮进行跳转:


  我们首先找到文导航这个按钮的位置:

  我们使用元素选择工具进行选择:




2、点击选择文档的按钮:


  与上面的那个是一样的方法:




然后呢,当我们完成了添加文件的操作以后,会出现一个翻译的按钮:




我们还需要点击那个翻译的按钮才可以获取得到翻译的结果。

  四、使用Python进行实现功能(selenium模块)


  我们直接给出代码。里面有比较详细的注释了啦:

 python学习交流Q群:906715085###


  from selenium import webdriver


  导入 python 的 selenium 模块


  def transfer(path):   


  """   


  这个函数是用作访问谷歌翻译的,首先获取文件的路径,然后向浏览器发送。   


  :param path: 你想要翻译的文件的绝对路径。   


  :return: 空   


  """   


  browser = webdriver.Chrome()    # 创建浏览器对象   


  browser.get('https://translate.google.cn/'      

         
  '?hl=zh-CN&tab=TT&sl=zh-CN&tl=en&op=translate')   


  # 访问谷歌翻译的网址   


  # 里面的参数设置了语言的翻译,我们可以进行修改,这里是将汉语翻译成为英语    h1 = browser.current_window_handle  

  
  # 记录当前的页面   


  # 这个操作是放置点击以后找不到我们想要的页面了啦   


  ele = browser.find_elements_by_tag_name("button")   


  # 获取得到 button 标签并且点击 button   


  # 这里采用了通过标签名来获取 button 的方法来进行获取标签,方便后面的点击操作    ele[1].click()   


  # 点击 button    all_h = browser.window_handles   


  # 获取得到所有的页面    browser.switch_to.window(all_h[0])   


  # 选择当前的页面    h2 = browser.current_window_handle    upload = browser.find_element_by_id('i34')  

  
  # 获取得到 “添加文件” 的那个按钮的标签   


  # 这个标签的 id 是我们通过网页检查获取得到的啦    upload.send_keys(path)   


  # 上传文件   


  # path 是文件的绝对路径,有我们自己选择指定    print(upload.get_attribute('value'))   


  # 打印显示文件的路径    browser.find_elements_by_tag_name("button")[39].click()   


  # 这个是点击上传文件成功以后的翻译按钮   

   
  res = browser.page_source    # 这个是获取得到页面的内容   


  with open("result.txt", "w+") as f:        # 这里是将翻译的结果写入一个文件      


  # 打开一个文件,然后将内容写入这个文件里面      


  print(res[30: len(res) - 20])        # 显示翻译的结果        
        
  f.write(res[30: len(res) - 20])        # 将翻译的结果写入文件之中        

        
  f.close()        # 操作完成文件以后还是需要进行关闭的操作的啦     

   
  browser.close()    # 所有的操作完成以后需要关闭浏览器了啦


  if __name__ == '__main__':    # main函数    # 这个是测试   


  transfer(path=r"C:\Users\1\Desktop\Google翻译\google_transfer0\test.txt")    #


   将文件的位置传递到形参 path 里面


把注释去掉以后的代码如下:


 from selenium import webdriver


  def transfer(path):   


  browser = webdriver.Chrome()   


  browser.get('https://translate.google.cn/'                '?hl=zh-CN&tab=TT&sl=zh-CN&tl=en&op=translate')   


  h1 = browser.current_window_handle   


  ele = browser.find_elements_by_tag_name("button")   


  ele[1].click()   


  all_h = browser.window_handles   


  browser.switch_to.window(all_h[0])   


  h2 = browser.current_window_handle   


  upload = browser.find_element_by_id('i34')   


  upload.send_keys(path)   


  print(upload.get_attribute('value'))   


  browser.find_elements_by_tag_name("button")[39].click()   


  res = browser.page_source   


  with open("result.txt", "w+") as f:      

  
  print(res[30: len(res) - 20])      

  
  f.write(res[30: len(res) - 20])      


  f.close()   


  browser.close()if __name__ == '__main__':   


  ransfer(path=r"C:\Users\1\Desktop\Google翻译\google_transfer0\test.txt")


五、测试功能


  我们进行测试:

  test.txt文件:





翻译完成以后生成的文件:




交互端的打印:




以上就是我们的测试,从而看出,已经实现了我们想要的功能了啦。













本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-4-26 10:21 , Processed in 0.066983 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表