Python 爬虫原理实现自动google翻译
首先用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翻译相关推荐
- python爬虫原理-python学习之python爬虫原理
原标题:python学习之python爬虫原理 今天我们要向大家详细解说python爬虫原理,什么是python爬虫,python爬虫工作的基本流程是什么等内容,希望对这正在进行python爬虫学习的 ...
- python爬虫原理-python爬虫原理详细讲解
原标题:python爬虫原理详细讲解 一 .爬虫是什么 1.什么是互联网? 互联网是由网络设备(网线,路由器,交换机,防火墙等等)和一台台计算机连接而成,像一张网一样. 2.互联网建立的目的?互联网的 ...
- python画球鞋_基于Python爬虫原理的篮球鞋选择程序的设计与实现
基于 Python 爬虫原理的篮球鞋选择程序的设计与实现 张世元 [期刊名称] <通讯世界> [年 ( 卷 ), 期] 2019(026)002 [摘要] 伴随着篮球鞋工艺的进步及产业升级 ...
- python学习之python爬虫原理
今天我们要向大家详细解说python爬虫原理,什么是python爬虫,python爬虫工作的基本流程是什么等内容,希望对这正在进行python爬虫学习的同学有所帮助! 前言 简单来说互联网是由一个个站 ...
- python爬取数据的原理_python学习之python爬虫原理
原标题:python学习之python爬虫原理 今天我们要向大家详细解说python爬虫原理,什么是python爬虫,python爬虫工作的基本流程是什么等内容,希望对这正在进行python爬虫学习的 ...
- [Python爬虫] Selenium实现自动登录163邮箱和Locating Elements介绍
前三篇文章介绍了安装过程和通过Selenium实现访问Firefox浏览器并自动搜索"Eastmount"关键字及截图的功能.而这篇文章主要简单介绍如何实现自动登录163邮箱,同时 ...
- Python爬虫 Selenium实现自动登录163邮箱和Locating Elements介绍
Python爬虫视频教程零基础小白到scrapy爬虫高手-轻松入门 https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.482434a6E ...
- python爬虫原理-python爬虫之认识爬虫和爬虫原理
python爬虫之基础学习(一) 网络爬虫 网络爬虫也叫网络蜘蛛.网络机器人.如今属于数据的时代,信息采集变得尤为重要,可以想象单单依靠人力去采集,是一件无比艰辛和困难的事情.网络爬虫的产生就是代替人 ...
- 关于Python爬虫原理和数据抓取1.1
为什么要做爬虫? 首先请问:都说现在是"大数据时代",那数据从何而来? 企业产生的用户数据:百度指数.阿里指数.TBI腾讯浏览指数.新浪微博指数 数据平台购买数据:数据堂.国云数据 ...
最新文章
- 清华大学唐杰教授:人工智能的十年总结
- 用CenterNet对旋转目标进行检测
- 反射中getMethods 与 getDeclaredMethods 的区别
- 运动学与雅可比矩阵举例
- Oracle创建用户并给用户授权查询指定表或视图的权限
- MySQL给用户设置密码(修改密码)、创建用户,grant为某个IP、某个网段或所有IP地址创建访问用户并授权
- HTML——meta标签
- 恒强制版系统980_速来围观 | 恒强制版小图高级功能讲解
- Glassnode:比特币正迎来多年以来最大的流动性枯竭
- 软件开发报价模板_模板类app开发价格是多少钱?
- 蓝桥杯集训之开训第一课
- pandas 提取某几列_用pandas做数据清洗,我一般都这么干
- 火车票线程同步(一)互斥体实现
- SVN“Previous operation has not finished; run 'cleanup' if it was interrupted”错误修复方法
- dbv连接mysql_mysql数据库版本控制dbv使用_MySQL
- 西门子MM440变频器调试小记
- 独立访客数UV、访问量PV和IP数的区别
- python_爬校花图片
- 【超分辨率】Zoom to Learn, Learn to Zoom
- Package XXX is not configured yet
热门文章
- tableau必知必会之运用本福德定律(Benford‘s law)验证数据真实性
- Spring + Struts + Hibernate联合开发(多对一关系)
- AI算法又整新活,去海边跳一支舞!
- Python编程基础:第四十一节 继承Inheritance
- 通过AI技术研究网红对其粉丝的消费品牌意识的影响
- 李小璐PGONE事件对推荐系统的考验
- lucene-solr本地调试方法
- 苏宁大数据离线任务开发调度平台实践:任务调度模块架构设计
- graylog2 架构--转载
- Spring(AbstractRoutingDataSource)实现动态数据源切换--转载