爬取谷歌翻译

  • 所需附件stealth.min.js
  • 前提
  • 思路
  • 调整
  • 代码实现
  • 使用备注

所需附件stealth.min.js

来自顽强拼搏的阿k博主的stealth.min.js,下载不需要C币或积分,我就不上传了。

前提

之前我发布的浅析Python谷歌翻译库的核心里面的代码仍然可以获取翻译结果,但是对于复杂翻译语种,获取到的结果和网页上的显示不同,这让我很气。
我自己也尝试进行再次破解过,但是万事俱备,只欠x-goog-batchexecute-bgr。这个参数是我的心头病,只要掌握了这个参数的获取方式,就能直接从谷歌翻译官网获取到正确的返回结果。如果有人会获取这个参数,可以留言评论,鄙人感激不尽!

思路

要想实现对复杂语种的准确翻译爬取,只能使用selenium爬虫了,用“所见即所得”的方式,无疑是最简单的爬虫方式,不过谷歌翻译官网默认不会允许webdriver的存在,所以就要使用stealth.min.js文件进行抹除webdirver的特征指纹,使用方式参照源码。

调整

谷歌翻译的自动语种识别有时候不准,拼音会识别为中文,所以这里我借用了一下百度翻译识别语种的接口,如有需要可以自行更改。

代码实现

# _*_ coding:utf-8 _*_
# FileName: google.py
# IDE: PyCharm
# 菜菜代码,永无BUG!import time
import requests
from fastapi import FastAPI  # pip install uvicorn fastapi jinja2 aiofiles
from urllib.parse import quote
from selenium import webdriver, common
from starlette.middleware.cors import CORSMiddleware
# from selenium.webdriver.chrome.options import Options
# options = Options()app = FastAPI()
app.add_middleware(CORSMiddleware,allow_origins=["*"],allow_credentials=True,allow_methods=["*"],allow_headers=["*"],
)
lans = ['af', 'sq', 'am', 'ar', 'hy', 'az', 'eu', 'be', 'bn', 'bs', 'bg', 'ca', 'ceb', 'ny', 'zh-cn', 'zh-tw', 'co', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'et', 'tl', 'fi', 'fr', 'fy', 'gl', 'ka', 'de', 'el', 'gu', 'ht', 'ha', 'haw', 'iw', 'he', 'hi', 'hmn', 'hu', 'is', 'ig', 'id', 'ga', 'it', 'ja', 'jw', 'kn', 'kk', 'km', 'ko', 'ku', 'ky', 'lo', 'la', 'lv', 'lt', 'lb', 'mk', 'mg', 'ms', 'ml', 'mt', 'mi', 'mr', 'mn', 'my', 'ne', 'no', 'or', 'ps', 'fa', 'pl', 'pt', 'pa', 'ro', 'ru', 'sm', 'gd', 'sr', 'st', 'sn', 'sd', 'si', 'sk', 'sl', 'so', 'es', 'su', 'sw', 'sv', 'tg', 'ta', 'te', 'th', 'tr', 'uk', 'ur', 'ug', 'uz', 'vi', 'cy', 'xh', 'yi', 'yo', 'zu']@app.get('/stop')
def stop():driver.close()driver.quit()print('Stopped complete .')return 'Stopped complete .'@app.get('/translate/{des:str}/{text:str}')
# 比赛开始结束
def competitions(des, text):lan = requests.post('https://fanyi.baidu.com/langdetect', data={"query": text}).json()["lan"]for la in lans:if la in lan.lower():lan = labreakelse:lan = 'auto'for la in lans:if la in des.lower():des = labreakelse:des = 'zh-CN'url = f'https://translate.google.cn/?sl={lan}&tl={des}&text={quote(text)}&op=translate'try:driver.get(url)# driver.find_element_by_class_name('er8xn').send_keys(text)except common.exceptions.TimeoutException:passwhile 1:try:return {'lan': lan, 'des': des, 'res': driver.find_element_by_class_name('VIiyi').text}except common.exceptions.NoSuchElementException:time.sleep(0.5)options = webdriver.ChromeOptions()
options.headless = True
options.add_argument('lang=zh_CN.UTF-8')
options.add_argument('user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36')
options.add_argument("--disable-blink-features=AutomationControlled")
options.add_experimental_option('excludeSwitches',  ['enable-automation'])  # webdriver防检测
# options.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2})  # 禁止图片加载
driver = webdriver.Chrome(options=options)
# driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {  # 关闭 window.navigator.webdriver 属性
#     "source": """
#         Object.defineProperty(navigator,'webdriver',{#             get: () => false
#         })
#     """
# })
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": open('stealth.min.js', 'r', encoding='utf-8').read()})
driver.get('https://translate.google.cn/')
driver.set_page_load_timeout(1)
print('Started complete .')

使用备注

  • 启动方式:uvicorn google:app --reload --port 8080
  • 使用方式:print(requests.get(“http://127.0.0.1:8080/translate/zh-cn/apple”).json()[“res”])
  • 停止方式:requests.get(“http://127.0.0.1:8080/stop”) 随后Ctrl + C手动停止uvicorn服务
  • 不宜连续使用次数过多,没有设计长时间使用的优化,否则最终容易卡住得不到返回值。

用“小聪明”实现连续爬取谷歌翻译相关推荐

  1. python爬取谷歌翻译

    由于谷歌翻译的api官方接口是有次数限制和收费的,于是乎,自己动手丰衣足食,通过抓包,js加密拼接,自己用python封装了一个爬取谷歌中英文翻译的接口,目前比较稳定无次数限制,地址:http://g ...

  2. 爬取goole翻译和百度翻译用于产生相似句子数据集

    2019独角兽企业重金招聘Python工程师标准>>> 项目的目的 在做问答系统研究的时候,想通过deeplearning的方法获得句子语义,并计算两个问句的相似度,为此需要相似问题 ...

  3. python爬百度翻译-Python爬取百度翻译(利用json提取数据)

    本篇文章给大家带来的内容是关于Python爬取百度翻译(利用json提取数据),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 工具:Python 3.6.5.PyCharm开发工具. ...

  4. python爬取百度翻译返回:{'error': 997, 'from': 'zh', 'to': 'en', 'query 问题

    解决办法: 修改url为手机版的地址:http://fanyi.baidu.com/basetrans User-Agent也用手机版的 测试代码: # -*- coding: utf-8 -*- & ...

  5. 从入门到入土:Python爬虫学习|实例练手|爬取百度翻译|Selenium出击|绕过反爬机制|

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  6. python 翻译库本地库_利用python爬取并翻译GEO数据库

    原标题:利用python爬取并翻译GEO数据库 GEO数据库是NCBI创建并维护的基因表达数据库,始于2000年,收录了世界各国研究机构提交的高通量基因表达数据,现芯片集数据量高达12万以上.想要从这 ...

  7. 《爬虫》爬取谷歌网页“人脸”图片

    爬取谷歌网页搜索的关于"人脸"的图片 目标:谷歌搜索"人脸" 网页搜索出现的图片 selenium:模拟浏览器的工具.(还需要下载ChromeDriver 放到 ...

  8. Python爬取百度翻译及有道翻译

    Python爬取百度翻译及网易有道翻译 百度翻译 一.简介 明确翻译链接,百度翻译链接:https://fanyi.baidu.com/,但是该链接不能为我们提供翻译的内容,此时需要在chrome浏览 ...

  9. 求解Python 爬取百度翻译手机版{errno:997,from:zh,to:en,query:\u4eba\u751f\u82e6\u77ed}怎么办

    环境:python3.7.3 import requestsurl = "https://fanyi.baidu.com/basetrans" data = {"quer ...

最新文章

  1. openresty编译添加stream-lua-nginx-module模块
  2. 《Engineering》评选2021年全球十大工程成就 | 中国工程院院刊
  3. 行业短信 运营思路_飞信、易信之后 三大运营商要借5G再战微信
  4. 什么是枚举,为什么有用?
  5. 1019 数字黑洞 (20 分)java
  6. JDK中提供的实现——通过 java.util.Observable 类和 java.util.Observer 接口定义了观察者模式,只要实现它们的子类就可以编写观察者模式实例
  7. linux中的IO函数
  8. iOS NSString追加字符串的方法
  9. 2006年博客之星(小废物点评版)
  10. 11.性能之巅 洞悉系统、企业与云计算 --- 云计算
  11. 菜鸟入门【ASP.NET Core】5:命令行配置、Json文件配置、Bind读取配置到C#实例、在Core Mvc中使用Options...
  12. 安卓中将Java文件转换成Dex文件
  13. word参考文献前面的自动编号在序号10以后,空隙变大
  14. Go:go mod vendor 使用
  15. 小程序开发用什么编程语言_微信小程序开发教程是什么?费用多少?
  16. ListView双击的行
  17. 基于人工鱼群优化可倒摆法(QIP)控制器附matlab代码
  18. 夫妻租房,同时办取上海市居住证 攻略
  19. SQL Server 2008 简体中文正式版下载地址(附序列号)
  20. 开发一个软件,到底需要花多少钱?

热门文章

  1. Qt Quick - GridLayout 网格布局
  2. FreeRTOS:内存管理
  3. 云计算就像马拉松 京东CTO为啥这么说
  4. uni-app调用Native.jsAPI实现对Android原生日历的增删查操作
  5. Python骚操作:打造VIP账号共享浏览器
  6. SQL学习(3)——表的复杂查询与函数操作
  7. 【CVPR 2019】Semantic Image Synthesis with Spatially-Adaptive Normalization(SPADE)
  8. linux中20个高级命令--【转载自微信公众号入门小站】
  9. 听见丨孙宏斌欲数十亿元增资乐视影业和乐视致新 百度发布AI智能硬件Raven H
  10. 链上信使协议AMOP