首先用chrome打开谷歌搜翻译,看看它是怎么请求数据的
右键 检查 进入开发者工具
选择network,如图

先点击一下这个clear,把原来的请求都clear,免得看不清

输入测试翻译内容

通过请求头信息,可以发现是get请求,请求翻译的内容是通过q这个参数传递的,其它参数暂时不知道什么意思。

q这个参数不清楚谷歌的方法,但有大神破解出来,我们直接用

class Py4Js():def __init__(self):self.ctx = execjs.compile(""" xo=function(a,b){for(var c=0;c<b.length-2;c+=3){var d=b.charAt(c+2);d="a"<=d?d.charCodeAt(0)-87:Number(d);d="+"==b.charAt(c+1)?a>>>d:a<<d;a="+"==b.charAt(c)?a+d&4294967295:a^d}return a}function TL(a){var wo=function(a){return function(){return a}}b=wo(String.fromCharCode(84));var c=wo(String.fromCharCode(75));b=[b(),b()];b[1]=c();b="750.0";var d=wo(String.fromCharCode(116));c=wo(String.fromCharCode(107));d=[d(),d()];c="&"+d.join("")+ "=";d=b.split(".");b=6;for(var e=[],f=0,g=0;g<a.length;g++){var k=a.charCodeAt(g);128>k?e[f++]=k:(2048>k?e[f++]=k>>6|192:(55296==(k&64512)&&g+1<a.length&&56320==(a.charCodeAt(g+1)&64512)?(k=65536+((k&1023)<<10)+(a.charCodeAt(++g)&1023),e[f++]=k>>18|240,e[f++]=k>>12&63|128):e[f++]=k>>12|224,e[f++]=k>>6&63|128),e[f++]=k&63|128)}a=b;for(f=0;f<e.length;f++)a+=e[f],a=xo(a,"+-a^+6");a=xo(a,"+-3^+b+-f");a^=Number(d[1])||0;0>a&&(a=(a&2147483647)+2147483648);a%=1E6;return c+(a.toString()+"."+ (a^b))}""")def getTk(self, text):return self.ctx.call("TL", text)

根据上面得到的q参数拼接url,得到

def buildUrl(text, tk):baseUrl = "https://translate.google.cn/translate_a/single?client=webapp&sl=zh-CN&tl=fr&hl=zh-CN&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&swap=1&otf=2&ssel=5&tsel=5&kc=1&"baseUrl += 'tk=' + str(tk) + '&'baseUrl += 'q=' + urllib.parse.quote(text)# print(baseUrl)return baseUrl

baseurl里面的tl控制翻译语言,例如中翻译英语,tl=en,我这儿是法语,所以tl=fr。

通过requests函数进行请求,得到翻译的返回结果

def translate(js, text):header = {'cookie': 'NID=188=Nx_B7MPjOKKUBKu4LByiqdUEwcO4goXhVKB0vtqhvJycCD3TIPTgA7HU80AQ4LJXfrAjV8gvawvSDMKgS52MkV3JB44kgzNq9aHp41EuL8-2Cns1re4xCgQvPr1jMI9JPZxFU9fdHtymXto3qCv64HVBIkQ8vfBRMxKeZl0XS4g','user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64)  AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36'}url = buildUrl(text, js.getTk(text))res = ''try:r = requests.get(url)result = json.loads(r.content.decode("utf-8"))res = result[0][0][0]except Exception as e:res = ''print(url)print("翻译失败:" + text)print(e)finally:return res

我这个数据全是在excel,所以数据从excel里面读取,最后再写回到excel,代码如下

def write_excel_xls(path, sheet_name, value):index = len(value)  # 获取需要写入数据的行数workbook = xlwt.Workbook()  # 新建一个工作簿sheet = workbook.add_sheet(sheet_name)  # 在工作簿中新建一个表格for i in range(0, index):for j in range(0, len(value[i])):sheet.write(i, j, value[i][j])  # 像表格中写入数据(对应的行和列)workbook.save(path)  # 保存工作簿print("xls格式表格写入数据成功!")def write_excel_xls_append(path, value):index = len(value)  # 获取需要写入数据的行数workbook = xlrd.open_workbook(path)  # 打开工作簿sheets = workbook.sheet_names()  # 获取工作簿中的所有表格worksheet = workbook.sheet_by_name(sheets[0])  # 获取工作簿中所有表格中的的第一个表格rows_old = worksheet.nrows  # 获取表格中已存在的数据的行数new_workbook = copy(workbook)  # 将xlrd对象拷贝转化为xlwt对象new_worksheet = new_workbook.get_sheet(0)  # 获取转化后工作簿中的第一个表格for i in range(0, index):for j in range(0, len(value[i])):new_worksheet.write(i + rows_old, j, value[i][j])  # 追加写入数据,注意是从i+rows_old行开始写入new_workbook.save(path)  # 保存工作簿print("xls格式表格【追加】写入数据成功!")if __name__ == '__main__':file_name = "test.xlsx"ad_wb = xlrd.open_workbook(file_name)# 获取第一个目标表单sheet_0 = ad_wb.sheet_by_index(0)book_name_xls = file_name.split(".")[0] + '-翻译结果.xls'sheet_name_xls = '中法翻译结果'value_title = [["原文", "法文"], ]write_excel_xls(book_name_xls, sheet_name_xls, value_title)for r in range(0, sheet_0.nrows):  #text1 = sheet_0.cell_value(r, 1)js1 = Py4Js()res1 = translate(js1, text1)print(r, text1, res1)value1 = [[text1, str(res1)], ]write_excel_xls_append(book_name_xls, value1)

运行后结果如图

​​​​​​​

Python 爬虫原理实现自动google翻译相关推荐

  1. python爬虫原理-python学习之python爬虫原理

    原标题:python学习之python爬虫原理 今天我们要向大家详细解说python爬虫原理,什么是python爬虫,python爬虫工作的基本流程是什么等内容,希望对这正在进行python爬虫学习的 ...

  2. python爬虫原理-python爬虫原理详细讲解

    原标题:python爬虫原理详细讲解 一 .爬虫是什么 1.什么是互联网? 互联网是由网络设备(网线,路由器,交换机,防火墙等等)和一台台计算机连接而成,像一张网一样. 2.互联网建立的目的?互联网的 ...

  3. python画球鞋_基于Python爬虫原理的篮球鞋选择程序的设计与实现

    基于 Python 爬虫原理的篮球鞋选择程序的设计与实现 张世元 [期刊名称] <通讯世界> [年 ( 卷 ), 期] 2019(026)002 [摘要] 伴随着篮球鞋工艺的进步及产业升级 ...

  4. python学习之python爬虫原理

    今天我们要向大家详细解说python爬虫原理,什么是python爬虫,python爬虫工作的基本流程是什么等内容,希望对这正在进行python爬虫学习的同学有所帮助! 前言 简单来说互联网是由一个个站 ...

  5. python爬取数据的原理_python学习之python爬虫原理

    原标题:python学习之python爬虫原理 今天我们要向大家详细解说python爬虫原理,什么是python爬虫,python爬虫工作的基本流程是什么等内容,希望对这正在进行python爬虫学习的 ...

  6. [Python爬虫] Selenium实现自动登录163邮箱和Locating Elements介绍

    前三篇文章介绍了安装过程和通过Selenium实现访问Firefox浏览器并自动搜索"Eastmount"关键字及截图的功能.而这篇文章主要简单介绍如何实现自动登录163邮箱,同时 ...

  7. Python爬虫 Selenium实现自动登录163邮箱和Locating Elements介绍

    Python爬虫视频教程零基础小白到scrapy爬虫高手-轻松入门 https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.482434a6E ...

  8. python爬虫原理-python爬虫之认识爬虫和爬虫原理

    python爬虫之基础学习(一) 网络爬虫 网络爬虫也叫网络蜘蛛.网络机器人.如今属于数据的时代,信息采集变得尤为重要,可以想象单单依靠人力去采集,是一件无比艰辛和困难的事情.网络爬虫的产生就是代替人 ...

  9. 关于Python爬虫原理和数据抓取1.1

    为什么要做爬虫? 首先请问:都说现在是"大数据时代",那数据从何而来? 企业产生的用户数据:百度指数.阿里指数.TBI腾讯浏览指数.新浪微博指数 数据平台购买数据:数据堂.国云数据 ...

最新文章

  1. 清华大学唐杰教授:人工智能的十年总结
  2. 用CenterNet对旋转目标进行检测
  3. 反射中getMethods 与 getDeclaredMethods 的区别
  4. 运动学与雅可比矩阵举例
  5. Oracle创建用户并给用户授权查询指定表或视图的权限
  6. MySQL给用户设置密码(修改密码)、创建用户,grant为某个IP、某个网段或所有IP地址创建访问用户并授权
  7. HTML——meta标签
  8. 恒强制版系统980_速来围观 | 恒强制版小图高级功能讲解
  9. Glassnode:比特币正迎来多年以来最大的流动性枯竭
  10. 软件开发报价模板_模板类app开发价格是多少钱?
  11. 蓝桥杯集训之开训第一课
  12. pandas 提取某几列_用pandas做数据清洗,我一般都这么干
  13. 火车票线程同步(一)互斥体实现
  14. SVN“Previous operation has not finished; run 'cleanup' if it was interrupted”错误修复方法
  15. dbv连接mysql_mysql数据库版本控制dbv使用_MySQL
  16. 西门子MM440变频器调试小记
  17. 独立访客数UV、访问量PV和IP数的区别
  18. python_爬校花图片
  19. 【超分辨率】Zoom to Learn, Learn to Zoom
  20. Package XXX is not configured yet

热门文章

  1. tableau必知必会之运用本福德定律(Benford‘s law)验证数据真实性
  2. Spring + Struts + Hibernate联合开发(多对一关系)
  3. AI算法又整新活,去海边跳一支舞!
  4. Python编程基础:第四十一节 继承Inheritance
  5. 通过AI技术研究网红对其粉丝的消费品牌意识的影响
  6. 李小璐PGONE事件对推荐系统的考验
  7. lucene-solr本地调试方法
  8. 苏宁大数据离线任务开发调度平台实践:任务调度模块架构设计
  9. graylog2 架构--转载
  10. Spring(AbstractRoutingDataSource)实现动态数据源切换--转载