注:传入的类型为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. bugku 逆向 love

    可以看到将输入先经过 sub_4110BE 这个函数进行加密 然后每一位加上下标本身 再和str2比较 正确就是right 点开加密函数: 关键语句就在这里 我们可以看到是算输入的字符按三个一组能分为 ...

  2. CH1201 最大子序和

    http://contest-hunter.org:83/contest/0x10%E3%80%8C%E5%9F%BA%E6%9C%AC%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9 ...

  3. 五一培训 清北学堂 DAY1

    今天是冯哲老师的讲授~ 1.枚举 枚举也称作穷举,指的是从问题所有可能的解的集合中一一枚举各元素. 用题目中给定的检验条件判定哪些是无用的,哪些是有用的.能使命题成立的即为其解. 例一一棵苹果树上有n ...

  4. LUYA-CDM

    下载链接:https://pan.baidu.com/s/11Lq3IWcAcAs9gYbq4mYm1Q 密码:n1kz

  5. You Are the One HDU - 4283 (区间DP)

    Problem Description The TV shows such as You Are the One has been very popular. In order to meet the ...

  6. 【Linux】配置SSH Key到GitHub/GitLab

    Linux配置SSH Key到GitHub/GitLab 准备工作 首先检查下本机是否已经安装了SSH,在终端输入ssh即可: 如果没有安装进行yum安装 # yum -y install opens ...

  7. Oracle下查看索引的语句

    1. 查询一张表里面索引  select * from user_indexes where table_name=upper('bills'); 2. 查询被索引字段  select * from ...

  8. 怎么添加在安装好的nvidia-docker上面根据Dockerfile构建自己所需要的运行环境

    在已经创建好nvidia-docker环境之后,对于新手小白来说,又有一个问题了,就是如何根据Dockerfile来构建试验所需要的docker环境 主要是以下几个步骤 首先创建一个mydocker文 ...

  9. 十行代码分清Java 的 || 和 &&

    发现有些同学到现在还没分不清 || 和 &&的作用 package System; /** * * @ClassName: RandomTest * @Description: 十行代 ...

  10. jenkins+ant+jmeter接口测试

    <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl=" ...