注:传入的类型为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. 树莓派3B+(二)

    一.安装SSH工具 这里用的是putty,下载下来是一个exe文件,点开就能用. 下载地址:https://www.chiark.greenend.org.uk/~sgtatham/putty/lat ...

  2. P4137 Rmq Problem / mex (莫队)

    题目 P4137 Rmq Problem / mex 解析 莫队算法维护mex, 往里添加数的时候,若添加的数等于\(mex\),\(mex\)就不能等于这个值了,就从这个数开始枚举找\(mex\): ...

  3. 学习java接口知识

    学习java接口知识 //一个类最多只能有一个直接的父类.但是有多个间接的父类. java是单继承. class ye_01{ String name; } class fu_01 extends y ...

  4. Codeforces 1092C Prefixes and Suffixes(思维)

    题目链接:Prefixes and Suffixes 题意:给定未知字符串长度n,给出2n-2个字符串,其中n-1个为未知字符串的前缀(n-1个字符串长度从1到n-1),另外n-1个为未知字符串的后缀 ...

  5. Word转PDF(SaveAsPDFandXPS + jacob)

    Windows系统下 1.下载所需插件和jar包 SaveAsPDFandXPS(微软自带office转PDF.XPS):http://www.microsoft.com/zh-cn/download ...

  6. 【转】Redis学习笔记(四)如何用Redis实现分布式锁(1)—— 单机版

    原文地址:http://bridgeforyou.cn/2018/09/01/Redis-Dsitributed-Lock-1/ 为什么要使用分布式锁 这个问题,可以分为两个问题来回答: 为什么要使用 ...

  7. 当前标识没有对“C:\WINDOWS\Microsoft.NET\...”的写访问权限的解决办法

    1.需要重新注册IIS服务扩展,在开始运行中输入以下命令运行:aspnet_regiis -i 32位的Windows: --------------------------------------- ...

  8. VS.NET C# 开发ArcGis插件无法进入断点调试的解决方法

    有人问起,想起来码到这儿,再有人问可以直接给链接参考. 以10.1为例,因为博主一直用的它,所以只能是这个例.其他版本如有不同,那就不同吧. 首先,得确认调试时启动了外部程序 在项目属性→调试→启动外 ...

  9. JavaScript数据类型检测 数组(Array)检测方式

    前言 对于确定某个对象是不是数组,一直是数组的一个经典问题.本文专门将该问题择出来,介绍什么才是正确的javascript数组检测方式 typeof 首先,使用最常用的类型检测工具--typeof运算 ...

  10. 细说java系列之HashMap原理

    目录 类图 源码解读 总结 类图 在正式分析HashMap实现原理之前,先来看看其类图. 源码解读 下面集合HashMap的put(K key, V value)方法探究其实现原理. // 在Hash ...