注:传入的类型为POST类型,所以需要使用urllib.parse.urlencode(),将字典转换成URL可用参数;

  使用json.loads(),将输出的json格式,转换为字典类型

import urllib.request
import urllib.parse
import json

content = input("请输入要翻译的内容:")
url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"
data = {}
data["i"] = content
data["from"] = "AUTO"
data["to"] = "AUTO"
data["smartresult"] = "dict"
data["client"] = "fanyideskweb"
data["salt"] = "1537624423057"
data["sign"] = "0c1989ed937485dd570fc4b5907cf567"
data["doctype"] = "json"
data["version"] = "2.1"
data["keyfrom"] = "fanyi.web"
data["action"] = "FY_BY_REALTIME"
data["typoResult"] = "false"
#因传入的类型为POST类型,所以需要将字典转换为url需要使用的参数
data = urllib.parse.urlencode(data).encode("utf-8")
response = urllib.request.urlopen(url, data)
html = response.read().decode("utf-8")
#将JSON格式转换成字典类型
translate = json.loads(html)
translate_src = translate["translateResult"][0][0]["src"]
translate_Result = translate["translateResult"][0][0]["tgt"]
print("翻译内容:%s" % translate_src)
print("翻译结果:%s" % translate_Result)

==============================使用代理访问======================================

import urllib.request

import urllib.parse

import json

while True:
  content = input("请输入要翻译的内容(输入!退出):")
  if content == "!":
  break
  url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"
  data = {}
  data["i"] = content
  data["from"] = "AUTO"
  data["to"] = "AUTO"
  data["smartresult"] = "dict"
  data["client"] = "fanyideskweb"
  data["salt"] = "1537624423057"
  data["sign"] = "0c1989ed937485dd570fc4b5907cf567"
  data["doctype"] = "json"
  data["version"] = "2.1"
  data["keyfrom"] = "fanyi.web"
  data["action"] = "FY_BY_REALTIME"
  data["typoResult"] = "false"
  #因传入的类型为POST类型,所以需要将字典转换为url需要使用的参数
  data = urllib.parse.urlencode(data).encode("utf-8")
  #---------------------------------代理---------------------------------------------------
  #urllib.request.ProxyHandler的参数师一个数组
  proxy_support = urllib.request.ProxyHandler({"https": "27.17.45.90:43411"})
  #创建一个opener
  opener = urllib.request.build_opener(proxy_support)
  #添加user-agent
  opener.addheaders = [("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
                   "AppleWebKit/537.36 (KHTML, like Gecko) "
                   "Chrome/69.0.3497.81 Safari/537.36")]
  #全局加载代理IP
  urllib.request.install_opener(opener)

  #----------------------------------代理结束--------------------------------------------------
  req = urllib.request.Request(url, data)
  req.add_header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
                "AppleWebKit/537.36 (KHTML, like Gecko) "
                "Chrome/69.0.3497.81 Safari/537.36")
  response = urllib.request.urlopen(req)
  html = response.read().decode("utf-8")
  #将JSON格式转换成字典类型
  translate = json.loads(html)
  translate_src = translate["translateResult"][0][0]["src"]
  translate_Result = translate["translateResult"][0][0]["tgt"]
  print("翻译内容:%s" % translate_src)
  print("翻译结果:%s" % translate_Result)

==============================分割线===========================================

1、在运行中报{"errorCode":50},将审查元素中获取的URL里面,将translate_o的_o去掉就不会报错。
2、data["salt"] = "1537624423057"  :时间戳
3、data["sign"] = "0c1989ed937485dd570fc4b5907cf567"   :时间戳 + 翻译内容加密生成的字符串
4、urllib.error.URLError: <urlopen error [Errno 11001] getaddrinfo failed>,没有连接到服务器,需要更换代理IP
5、urllib.error.HTTPError: HTTP Error 403: Forbidden:需要添加user-agent
 
 

Python爬去有道翻译的更多相关文章

  1. python爬去电影天堂恐怖片+游戏

    1.爬去方式python+selenium 2.工作流程 selenium自动输入,自动爬取,建立文件夹,存入磁力链接到记事本 3.贴上代码 #!/usr/bin/Python# -*- coding ...

  2. Python 编写一个有道翻译的 workflow 教程

    最近使用有道翻译的 workflow 总是翻译不了,可能是 appKey 失效了或者超过调用上限,所以打算自己实现一个. 创建 workflow 打开 Alfred3 的 Preferences,选择 ...

  3. python爬虫之有道翻译

    import urllib.request import urllib.parse import json class Translate():     def __init__(self):     ...

  4. Python爬去图片实例,python 爬取图片

    # coding:utf-8 import requests import re import time proxies = { "http": "http://124. ...

  5. 利用Python爬去囧网福利(多线程、urllib、request)

    import os; import urllib.request; import re; import threading;# 多线程 from urllib.error import URLErro ...

  6. python爬去虎扑数据信息,完成可视化

    首先分析虎扑页面数据 如图我们所有需要的数据都在其中![image.png](1)所以我们获取需要的内容直接利用beaitifulsoupui4``` soup.find_all('a',class_ ...

  7. 使用python爬去国家民政最新的省份代码的程序,requests,beautifulsoup,lxml

    使用的python3.6 民政网站,不同年份数据可能页面结构不一致,这点踩了很多坑,这也是代码越写越长的原因. 如果以后此段代码不可用,希望再仔细学习下 页面结构是否发生了变更. # -*- codi ...

  8. python爬去壁纸网站上的所有壁纸

    import requests as r 2 from bs4 import BeautifulSoup 3 import os 4 base_url = "http://www.win40 ...

  9. [Python] 使用有道翻译API

    Python 使用youdao (有道翻译)API 想写一个给自己记录背单词状况的软件,需要获取英文单词的中文释义(基本功能).考虑使用有道翻译的API实现获取英文单词的中文释义的方法. 获取API_ ...

随机推荐

  1. Vue.js 2.x笔记:表单绑定(3)

    1. 基础用法 v-model 指令:在表单 input 和 textarea 元素上创建双向数据绑定. 1.1 单行文本(Text) <div id="app"> & ...

  2. 【转载】利用window.performance.timing进行性能分析

    利用window.performance.timing进行性能分析   性能分析... window.performance.timing中相关属性语义: // .navigationStart 准备 ...

  3. wx.request 使用数据

    小程序中,怎么使用wx.request返回的数据??? 在你的js页面中 主要是这句话 var that=this; 为什么呢?因为使用过jquery的ajax的朋友都知道.在ajax函数中的this ...

  4. MT【328】向量里的最佳逼近

    已知平面向量$\overrightarrow {a},\overrightarrow {b}$满足$|\overrightarrow {a}|=4,|\overrightarrow {b}|=2$.若 ...

  5. openstack虚拟机内核崩溃问题解决

    openstack对接的kvm虚拟化环境,创建虚拟机后无法进如系统,一直卡在call Trace . 解决办法: 更改配置文件的cpu-model,libvirt_cpu_mode = custom ...

  6. WD与地图 解题报告

    WD与地图 哎,我好傻啊,看了题解还弄错了一遍,靠着lbw指点才董 题意:给一个带点权有向图,要求支持删边,查询一个scc前\(k\)大权值,修改点权,不强制在线. 显然倒序处理变成加边 考虑求出每条 ...

  7. JavaScript DOM 高级程序设计读书笔记一

    创建可重用的对象 简而言之,对象就是包含一组变量(称为属性)和函数(称为方法)的集合的实例.对象通常由类派生而来,而类中定义了对象拥有的属性和方法.如果你的脚本中都是对象之间的交互操作,那么就可以称之 ...

  8. 微信小程序绘制分享图

    微信小程序绘制分享图例子: demo下载地址:https://gitee.com/v-Xie/wxCanvasShar 大致代码会再以下说明 实际开发项目: 基础知识点: 了解canvas基础知识 w ...

  9. Java基础--异常处理

    1.异常的传统处理方式 缺点: [1] 通过判断影响执行效率. [2] 判断逻辑和业务逻辑交织在一起,可维护性很差. public class Test01 { public static void ...

  10. 关于FastDBF库读写ArcGis dbf文件的小bug

    该库托管于GitHub,地址:https://github.com/SocialExplorer/FastDBF 贡献者应该都是老外,所以…… 1.解析文件头,字段名部分如果有中文命名字段会出错 在D ...