Python 全栈工程师核心面试 300 问深入解析(2020 版)----全文预览

Python 全栈工程师核心面试 300 问深入解析(2020 版)----欢迎订阅

今天尝试了一个Python3的爬虫项目:

Python3实现有道在线翻译

代码实现过程中遇到一些问题,经过研究都找到了对应的解决方法,先将遇到的问题和解决方法汇总如下,供大家参考:

有道在线翻译是POST实现的,百度翻译也是。

有道翻译每次翻译的时候,最上方地址栏中的地址时固定不变的,可以猜测有道是通过post请求实现翻译功能的。

POST与GET的区别:

POST请求的参数都在放在formdata中,可以查看有道翻译,翻译一个单词,检查network中headers,里面有formdata,里面有发送请求的相关参数。浏览器地址栏中的网址没有发生变化。可以参考有道翻译:
http://fanyi.youdao.com/

get请求:请求的参数直接放在url地址之中,请求的参数进行url编码直接放在地址中,可以参考豆瓣的电影排行榜:
https://movie.douban.com/typerank?type_name=剧情&type=11&interval_id=100:90&action=

(注:判断post与get请求最显著的区别就是url地址是否发生变化,发生变化了就是get,反之则是post请求,post请求的参数是在表单里)

先放最终项目实现的源码:

# Python3实现有道在线翻译案例
# 有道在线翻译http://fanyi.youdao.com/import json
from urllib import request, parseif __name__ == '__main__':key = input("请输入需要翻译的文字(输入完成后请按Enter): ")# 打开有道在线翻译,输入girl,检查,找到headers,复制里面的网址url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'# 将网页中的Form Data中的所有数据复制出来# 通过调试发现,只需要其中的i对应要翻译的内容和doctype对应的数据格式formdata = {'i': key,'doctype': 'json',}# formdata中的数据需要转换为bytes格式data = parse.urlencode(formdata).encode()# 将网页中的请求头Request Headers中的数据复制出来,只需要一个用户代理即可headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71',}# 请求网页req = request.Request(url=url, data=data, headers=headers)# 返回网页res = request.urlopen(req)# 下载导出数据result = json.loads(res.read())# 打印出翻译后的结果print("\n翻译结果: " + result["translateResult"][0][0]["tgt"])

输出结果:

中译英请输入需要翻译的文字(输入完成后请按Enter): 我爱你,亲爱的包包翻译结果: I love you, my dear bag英译中请输入需要翻译的文字(输入完成后请按Enter): I LOVE YOU BABY翻译结果: 我爱你宝贝

问题汇总

问题1:

出现以下错误:“errorcode”:50
解决方法:将原网址中的_o删除
- 原网址:http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule
- 修改后网址:http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule
- _o的可能用途:有道翻译在线进行了加密过程,检查源码发现formdata中有salt(俗称加盐,一个附加的字符串,附加之后然后进行加密,类似于一般用户输入密码位数有限,服务器会给密码附加一串随机的数值,然后再进行加密,加密一般都是JS加密)和sign(加密后的字段)两个数据
- 如果要用带_o的网址,需要将这两个参数带上,但是只能翻译你网页刚刚翻译的那个单词,翻译其它的代码会一直处于等待状态。。。可能是加密引起的。

**

问题2:

**
翻译没有结果显示,或者提示编码错误
解决方法:

  1. 请求头中只保留用户代理,还是不行更换用户代理
    用户代理地址参考:
    https://blog.csdn.net/u011318077/article/details/86508095
  2. formdata中删除非关键参数,只保留以上代码中的键值

本文部分内容参考以下文章:
https://mp.weixin.qq.com/s/L1GNT-cfY5KltU16jbHVsA
https://fishc.com.cn/thread-86581-1-1.html

如果大家还遇到其它问题,欢迎回复补充

Python3—爬虫实现有道在线翻译—(常见错误汇总及解决方法)相关推荐

  1. ASP.NET常见错误,原因及解决方法(2003版)_不断更新.....

    [标题]             ASP.NET常见错误,原因及解决方法[错误提示]    异常详细信息: System.Net.WebException: 请求因 HTTP 状态 401 失败:Un ...

  2. MINIGUI常见错误集及解决方法

    MINIGUI常见错误集及解决方法 个人前言:其中错误1到16是直接转载的一篇博客,在移植MiniGUI过程中碰到的问题远远不止这些,我只是拿这16个先开个头,以后会将我自己在移植MiniGUI的过程 ...

  3. 113 虚拟机 错误 mysql_Navicat连接虚拟机mysql常见错误问题及解决方法

    问题1 解决 启动服务:service mysqld start; /sbin/iptables -I INPUT -p tcp --dport 8011 -j ACCEPT #开启8011端口 /e ...

  4. java代码走查常见错误_FindBugs常见错误描述和解决方法

    (一)[DLS_DEAD_LOCAL_STORE] 描述: Dead store to 未使用的局部变量 解决方法:局部变量定义后未使用:实例化对象后又重新对该对象赋值 (二) [ST_WRITE_T ...

  5. 亚马逊登陆显示服务器出错,Amazon CloudFront常见错误配置及解决方法

    很多的用户在最初使用CloudFront做Web类内容分发的时候遇到无法调通的情况,本文总结了用户在配置过程中遇到的常见错误,内容涵盖了大部分用户遇到的情况. 错误一  源访问权限未放开 这种错误常见 ...

  6. 嵌入式LINUX新手问题大全——常见错误已及解决方法

    前言 这里是在群里整理的同学们遇到的问题,有错和问题的情况下希望大家提出来发 [url=mailto:邮件至 1402284892@qq.com]邮件至 1402284892@qq.com[/url] ...

  7. python读音有道-python爬虫之有道在线翻译

    今天初学了python这门课 老师简单的讲解了一下 python的安装环境,配置环境变量,当前主流Python使用的是3.x版本, 下午简单的讲解了python的起源,发展以及在各个方面的应用 然后晚 ...

  8. PHP编译过程中常见错误信息的解决方法

    在CentOS编译PHP5的时候有时会遇到以下的一些错误信息,基本上都可以通过yum安装相应的库来解决.以下是具体的一些解决办法: checking for BZip2 support- yes ch ...

  9. ABAQUS常见错误提示及解决方法(一)

    下面是自己在使用ABAQUS时遇到的报错及可能的错误原因分析,供参考: 问题1:报错"THE INDEPENDENT VARIABLES MUST BE ARRANGED IN ASCEND ...

  10. Python3网络爬虫教程8——有道在线翻译项目(JS加密)

    上接: Python3网络爬虫教程7--SSL数字证书 https://blog.csdn.net/u011318077/article/details/86538116 6. js加密(有道在线翻译 ...

最新文章

  1. .NET设计模式(18):迭代器模式(Iterator Pattern)(转)
  2. linux内核调用( )为进程创建虚存区_Linux内核分析-总结篇(九)
  3. python变量无需创建赋值_Python 第 2 章 变量及赋值运算符
  4. java excel相同的合并_java servlet导出EXCEL并合并EXCEL相同值的单元格(Apache POI技术)...
  5. 用SQL在文本文件中追加数据
  6. weico.android批量转发,weico android|Weico新浪微博3.3.5 客户端_手机软件
  7. Windows 无法卸载IE9怎么办
  8. 已解决-Excel选择多个单元格,只有计数,没有合计和平均值
  9. 大学四年,工作2年我总结了后端面试的所有知识点(持续更新)
  10. 怎么做国外的问卷调查
  11. 360浏览器调试html5,360极速浏览器开发:调试指南
  12. Linux递归修改后缀名
  13. 微信公众号(一) --- 开启微信公众号服务
  14. 京东大客户开放平台VOP接口对接记录
  15. 安装包时遇到 requires a peer of @angular/core、unmet peer dependency...的问题
  16. iOS-OC-3DES加密和解密
  17. 电站锅炉行业PLM的可定制知识管理软件
  18. 朋友圈九宫格android,CUTTT - 四六九宫格藏图,玩出朋友圈新高度 - Android 应用 - 图像 - 【最美应用】...
  19. 景区怎么防止年票卡多人使用?
  20. 车厢调度(4种方法)

热门文章

  1. Nginx不解析PHP,无法打开PHP文件
  2. 程序猿---北京骑行天津~~~~
  3. Kali 2020 DHCP获取动态ip和静态IP设置方法
  4. 外贸建站需要注意的事项
  5. 十进制转十二进制-复试练习
  6. wttr.in Linux 下查看天气
  7. 2068个开源的网站模板【免费下载】
  8. android小米手机拍照功能,小米手机 调用相机拍照后无法返回问题
  9. 如何用计算机计算概率,计算器怎么算概率里面的A和C
  10. matlab画一只猫,【MATLAB系列04】当一只猫遇见了Matlab