文章目录

  • 一.准备工作
    • 1.工具
    • 二.思路
  • 三.获取数据
    • (1)打开主站
    • (2)分析网页
    • (3)分析数据加载方式
  • 四.撰写爬虫
  • 五.输出结果
  • 六.总结

由于需求,要做一个翻译软件,主要是将外语翻译为汉语,特写一篇博客,记录下我的思路和代码。

一.准备工作

1.工具

(1)chrome 谷歌浏览器 下载地址:https://www.google.cn/chrome/,Xpath Helper 用于快速编写xpath语法,下载地址:https://wws.lanzous.com/iB3Rtiqxdbg

(2)python3.7 下载地址:https://www.python.org/downloads/release/python-374/,开发工具:PyCharm 下载地址:http://www.jetbrains.com/

二.思路

1.整体思路

2.Python代码思路

三.获取数据

(1)打开主站

本次要分析的网页为:

https://fanyi.900cha.com/


可以看到,用户通过在输入框输入要翻译的内容,然后选择源语言和目标语言,最终可以实现将源语言转化为目标语言,即语言翻译。

(2)分析网页

接下来分析数据加载方式,分析以下他是如何实现语言的转化。将我们准备好的文本(蒙古语),输入到框框中,点击在线翻译。


发现页面类似于刷新即url没有改变,但是在上方出现了翻译结果,经验告诉我,他是通过post用户输入文本到网站最后返回数据。

(3)分析数据加载方式

F12或者右击检查,打开开发者工具,切换到network选项卡并且刷新网页,重新获取数据,搜索翻译结果。
遂点击Headers查看网页url和相关信息,查看请求url和请求方法。
和猜想一样,确实是Post请求,这时接着往下查看Form Data。
已经很明显了,当用户输入翻译内容并且选定翻译语言后,网站通过post方法将这些data提交到了请求的url中,返回了翻译结果。

四.撰写爬虫

#coding=utf-8
'''
本脚本实现将非汉语文字转化为汉语
'''
import requests
from lxml import etree
import urllib3#发送请求,获取响应后的html文本
def get_html():url='https://fanyi.900cha.com/'headers={'Accept-Language': 'zh-CN,zh;q=0.9','Connection': 'keep-alive','Host': 'fanyi.900cha.com','Origin': 'https://fanyi.900cha.com','Referer': 'https://fanyi.900cha.com/','Upgrade-Insecure-Requests': '1','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36'}form_data={'content':text,'source': 'auto',#源语言,设置auto为自动识别'target': "zh"#目标语言}try:# 禁用安全请求警告urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)r=requests.post(url,headers=headers,data=form_data,verify=False)#verify=False移除SSL认证return r.textexcept:pass#解析网页内容
def parse(html):res=etree.HTML(html)tr_result=res.xpath('//div[@class="card-body"]/p/text()')result=''.join((tr_result)).strip()#将结果进行字符串处理print(result)def main():res = get_html()parse(res)if __name__ == '__main__':text='''Сайн уу, найзуудаа, би Хунюань Синжи Тайжи сургуулийн эх орондоо ?йлчлэх мастер юм.  Яг одоо нэг найз маань надаас Ма багшид юу тохиолдсон юм гэж асуухад би юу болоод байгааг хэлээд надад хэдэн скриншот явуулсан юм.  Тийм ээ!  Энэ нь ?чигд?р болж таарлаа.Тэд гучин насны хоёр залуу байсан б?г??д нэг нь 90 гаруй кг жинтэй, н?г?? нь 80 гаруй кг жинтэй байсан.Тэд ?? ... нэг нь намайг биеийн тамирын зааланд хичээллэж байх ?ед миний умайн х?з??ний нуруу хугарсан гэсэн.Ма багш  Та надад эмх замбарааг?й юань тариалах аргыг зааж ?гч болох уу, богинохон ... Умайн х?з??ний нуруугаа эмчлэхэд туслаач.  Би тийм гэж хэлсэн.  Би чамайг биеийн тамирын зааланд шаргуу ажиллахг?й байна гэж хэлсэн, тэр ч бас итгэлг?й байна.  Би х??хэд гэж хэллээ: чи над дээр хоёр гар, нэг хуруугаараа ир, тэр олохг?й байна.  Тэр чамайг дэмий гэж хэлсэн.  Би ??рийг?? '''main()

这里介绍一下Xpath Helper

xpath helper插件是一款免费的chrome爬虫网页解析工具。可以帮助用户解决在获取xpath路径时无法正常定位等问题。该插件主要能帮助你在各类网站上通过按shift键选择想要查看的页面元素来提取查询其代码,同时你还能对查询出来的代码进行编辑,而编辑出的结果将立即显示在旁边的结果框中。

在信息抽取的时候,用它很方便。

五.输出结果

程序运行是没有问题的。
此翻译器的GUI版本以及GUI版本源代码我放在了蓝奏云:https://wws.lanzous.com/i2ysujzllcd

六.总结

  • 本次用python写了一个在线翻译的脚本,能够实现不同语言之间的转换。分析出网页数据请求方式,通过在python构造相应的请求,即可得到响应结果,此翻译工具日常翻译单词,句子没有问题,但是不能翻译长度超过5000的文本,还有待改进。思路、代码方面有什么不足欢迎各位大佬指正、批评!

附:语言表

'自动选择': 'auto'
'南非荷兰语': 'af'
'阿尔巴尼亚语': 'sq'
'阿姆哈拉语': 'am'
'阿拉伯语': 'ar'
'亚美尼亚语': 'hy'
'阿塞拜疆语': 'az'
'巴斯克语': 'eu'
'白俄罗斯语': 'be'
'孟加拉语': 'bn'
'波斯尼亚语': 'bs'
'保加利亚语': 'bg'
'加泰罗尼亚语': 'ca'
'宿务语': 'ceb'
'中文(简体)': 'zh'
'中文(繁体)': 'zh-TW'
'科西嘉语': 'co'
'克罗地亚语': 'hr'
'捷克语': 'cs'
'丹麦语': 'da'
'荷兰语': 'nl'
'英语': 'en'
'世界语': 'eo'
'爱沙尼亚语': 'et'
'芬兰语': 'fi'
'法语': 'fr'
'弗里西语': 'fy'
'加利西亚语': 'gl'
'格鲁吉亚语': 'ka'
'德语': 'de'
'希腊语': 'el'
'古吉拉特语': 'gu'
'海地克里奥尔语': 'ht'
'豪萨语': 'ha'
'夏威夷语': 'haw'
'希伯来语': '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'
'尼杨扎语(齐切瓦语)': 'ny'
'普什图语': 'ps'
'波斯语': 'fa'
'波兰语': 'pl'
'葡萄牙语': 'pt'
'旁遮普语': 'pa'
'罗马尼亚语': 'ro'
'俄语': 'ru'
'萨摩亚语': 'sm'
'苏格兰盖尔语': 'gd'
'塞尔维亚语': 'sr'
'塞索托语': 'st'
'修纳语': 'sn'
'信德语': 'sd'
'僧伽罗语': 'si'
'斯洛伐克语': 'sk'
'斯洛文尼亚语': 'sl'
'索马里语': 'so'
'西班牙语': 'es'
'巽他语': 'su'
'斯瓦希里语': 'sw'
'瑞典语': 'sv'
'塔加洛语(菲律宾语)': 'tl'
'塔吉克语': 'tg'
'泰米尔语': 'ta'
'泰卢固语': 'te'
'泰语': 'th'
'土耳其语': 'tr'
'乌克兰语': 'uk'
'乌尔都语': 'ur'
'乌兹别克语': 'uz'
'越南语': 'vi'
'威尔士语': 'cy'
'班图语': 'xh'
'意第绪语': 'yi'
'约鲁巴语': 'yo'
'祖鲁语': 'zu'
'南非荷兰语': 'af'
'阿尔巴尼亚语': 'sq'
'阿姆哈拉语': 'am'
'阿拉伯语': 'ar'
'亚美尼亚语': 'hy'
'阿塞拜疆语': 'az'
'巴斯克语': 'eu'
'白俄罗斯语': 'be'
'孟加拉语': 'bn'
'波斯尼亚语': 'bs'
'保加利亚语': 'bg'
'加泰罗尼亚语': 'ca'
'宿务语': 'ceb'
'中文(简体)': 'zh'
'中文(繁体)': 'zh-TW'
'科西嘉语': 'co'
'克罗地亚语': 'hr'
'捷克语': 'cs'
'丹麦语': 'da'
'荷兰语': 'nl'
'英语': 'en'
'世界语': 'eo'
'爱沙尼亚语': 'et'
'芬兰语': 'fi'
'法语': 'fr'
'弗里西语': 'fy'
'加利西亚语': 'gl'
'格鲁吉亚语': 'ka'
'德语': 'de'
'希腊语': 'el'
'古吉拉特语': 'gu'
'海地克里奥尔语': 'ht'
'豪萨语': 'ha'
'夏威夷语': 'haw'
'希伯来语': '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'
'尼杨扎语(齐切瓦语)': 'ny'
'普什图语': 'ps'
'波斯语': 'fa'
'波兰语': 'pl'
'葡萄牙语': 'pt'
'旁遮普语': 'pa'
'罗马尼亚语': 'ro'
'俄语': 'ru'
'萨摩亚语': 'sm'
'苏格兰盖尔语': 'gd'
'塞尔维亚语': 'sr'
'塞索托语': 'st'
'修纳语': 'sn'
'信德语': 'sd'
'僧伽罗语': 'si'
'斯洛伐克语': 'sk'
'斯洛文尼亚语': 'sl'
'索马里语': 'so'
'西班牙语': 'es'
'巽他语': 'su'
'斯瓦希里语': 'sw'
'瑞典语': 'sv'
'塔加洛语(菲律宾语)': 'tl'
'塔吉克语': 'tg'
'泰米尔语': 'ta'
'泰卢固语': 'te'
'泰语': 'th'
'土耳其语': 'tr'
'乌克兰语': 'uk'
'乌尔都语': 'ur'
'乌兹别克语': 'uz'
'越南语': 'vi'
'威尔士语': 'cy'
'班图语': 'xh'
'意第绪语': 'yi'
'约鲁巴语': 'yo'
'祖鲁语': 'zu'

python3实用小工具--语言翻译器(附源码)相关推荐

  1. 站长便民小工具引流网站源码_站长引流工具箱

    介绍: 站长便民小工具引流网站源码,站长引流工具箱,内附各种实用小工具,接口是别人的. 可以使用 网盘下载地址: http://kekewl.cc/atT7j70pUXI 图片:

  2. java计算机毕业设计ssm学生课堂考勤小程序947n4(附源码、数据库)

    java计算机毕业设计ssm学生课堂考勤小程序947n4(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ ...

  3. JAVA计算机毕业设计融呗智慧金融微资讯移动平台小程序端(附源码、数据库)

    JAVA计算机毕业设计融呗智慧金融微资讯移动平台小程序端(附源码.数据库) 目运行 环境项配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ ...

  4. Java利用反射封装DBUtil,mysql万能增删改查工具类,附源码

    Java利用反射封装DBUtil,mysql万能增删改查工具类,附源码 等有时间再慢慢写代码注释吧,先把源码放出来.文章最后有整个项目的压缩包. ps:拓展 Java 原生MySQL JDBC 插入后 ...

  5. 天天酷跑php源码_Java实现天天酷跑小游戏完整代码(附源码)

    首先,写一个需求文档: 一.项目名称:<天天酷跑>(RunDay) 二.功能介绍: 闯关类游戏,玩家登录后,选择进入游戏,通过键盘控制玩家的上下左右移动,来躲避 障碍物和吃金币,玩家躲避的 ...

  6. 天天酷跑电脑版代码C语言,Java实现天天酷跑小游戏完整代码(附源码).pdf

    Java实实现现天天天天酷酷跑跑小小游游戏戏完完整整代代码码(附附源源码码) 首首先先,,写写一一个个需需求求文文档档:: 一.项目名称: <天天酷跑> (RunDay ) 二.功能介绍: ...

  7. 70个Python实用练手项目(附源码)

    不管学习哪门语言都要做出实际的东西来,这个实际的东西就是项目. 恶霸整理了 70 个 Python 实战项目,都有完整且详细的教程,你可以从中选择自己想做的项目进行参考学习练手,你也可以从中寻找灵感去 ...

  8. python嗅探工具详解附源码(使用socket,带tkinter界面)

    python嗅探工具详解(带tkinter界面) 点击详见原理 点击详见原理 TCP/IP协议号补充 必备基础知识 IP数据包格式 详见点此 TCP报文格式 详见点此 struct模块 在Python ...

  9. 微信小程序实战视频教程附源码课件与多个微信小程序源码 14课

    课程介绍: 两天微信小程序实战,结合豆瓣API开发豆瓣小程序,附带微信官方小程序开发工具win版与mac版.还有几个小程序源码可供剖析. 课程目录: 第一天 01-内容介绍 02-微信小程序开发工具的 ...

  10. Windows小工具广告弹窗杀手+源码

    简介: 搞了个火绒拦截弹窗单板,还得一直开着,有的时候有些弹窗还拦截不了,所以根据以前我自己手动屏蔽弹窗的方法用易语言写本程序 现在抖音上似乎也有人讲这方法,就是找到弹窗程序路径,通过把程序扩展名改掉 ...

最新文章

  1. 弃繁就简!一行代码搞定 Python 日志!
  2. boost::lexicographical_compare相关的测试程序
  3. 数据库数据规范化看不懂_数据库管理系统中的规范化
  4. 讲故事形式解释什么是股票_讲故事的人可以教公开领导者什么
  5. c#split方法拆分为数据_【转载】C#使用Split函数根据特定分隔符分割字符串
  6. int char转换成string java,java中int,char,string三种类型的相互转换
  7. 清华大学计算机期末试题,清华大学计算机系C++期末考试题及答案.doc
  8. Python程序-打印斐波拉契数列
  9. cesium 经纬度绘制点_Cesium经纬度与坐标的问题
  10. 使用bat运行jar文件
  11. ClassFinal 加密 Java class文件工具
  12. 那个高产似母猪的复旦计算机硕士
  13. linux中程序定时重启脚本,linux 程序定时重启脚本
  14. Linux命令 ln
  15. bootstrap--表格(table的各种样式)
  16. windows10 javac错误:javac不是内部或外部命令 也不是可运行的程序
  17. mysql 过滤纯数字_mysql中怎么样过滤字符串中的数字
  18. centos8 解决yum重装
  19. Redis安装整理(window平台和Linux平台)
  20. Java-并发编程知识点总结

热门文章

  1. 如何正确的制定目标?(只需4步)
  2. 常见必问面试问题一_面试自我介绍3分钟、离职原因、期望薪资…(含面试技巧和答案)
  3. linux版wps系统缺失字体,ubuntu wps 字体缺失的解决方法
  4. MSP430F149最小系统原理图与芯片封装分享
  5. word标题在大纲视图下统一升降级
  6. CEI Harpoon v1.3-ISO 1CD
  7. HTML+CSS学习笔记
  8. matlab 浮动波动率,Matlab计算股票价格波动率
  9. 电脑如何检查驱动程序是否正常
  10. e5服务器系列天梯图,最新的至强e5处理器天梯图