python爬有道翻译

在有道翻译页面中打开开发者工具,在Headers板块找到Request URL以及相应的data。

import urllib.request
import urllib.parse
import json

content=input(‘请输入需要翻译的内容:‘)

#_o要去掉,否则会出先error_code:50的报错
url=‘http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule‘

data={}
#开发者工具里有,i和doctype键不可少
data[‘i‘]=content
data[‘from‘]=‘AUTO‘
data[‘to‘]=‘AUTO‘
data[‘smartresult‘]=‘dict‘
data[‘client‘]=‘fanyideskweb‘
data[‘salt‘]=‘15695569180611‘
data[‘sign‘]=‘5b0565493d812bc5e713b895c12d615d‘
data[‘doctype‘]=‘json‘
data[‘version‘]=‘2.1‘
data[‘keyfrom‘]=‘fanyi.web‘
data[‘action‘]=‘FY_BY_REALTTIME‘

#将字典类型的请求数据转化为url编码,并将编码类型转变为‘utf-8‘类型
data=urllib.parse.urlencode(data).encode(‘utf-8‘)

#向url请求data的响应结果
response=urllib.request.urlopen(url,data)

#读取返回数据内容,decode是转换返回数据的格式为str
html=response.read().decode(‘utf-8‘)

#使用json将字符串转化成字典
target=json.loads(html)

#结果在key=‘translateResult‘的三层列表的key=‘tgt‘中
print("翻译结果:%s" %(target[‘translateResult‘][0][0][‘tgt‘]))

  

上面这种很大可能被有道网页给识别出来不是人工在访问,而是代码在访问。

此时我们可以加个‘User-Agent’代理。通过设置User Agent来达到隐藏身份的目的,一般情况下浏览器是通过User-Agent来识别的。

通过调用urllib.request.Request()来设置UA。

class urllib.request.Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None)

This class is an abstraction of a URL request.

  url should be a string containing a valid URL.

  headers should be a dictionary #headers要为字典

有两种方法设置User Agent:

1.在创建Request对象的时候,填入headers参数(包含User Agent信息),这个Headers参数要求为字典;

2.在创建Request对象的时候不添加headers参数,在创建完成之后,使用add_header()的方法,添加headers。

import urllib.request
import urllib.parse
import json
import time

while True:

    content=input(‘请输入需要翻译的内容(输入"q!退出程序"):‘)

    if content==‘q!‘:
        break;

    #_o要去掉,否则会出先error_code:50的报错
    url=‘http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule‘

    ‘‘‘
    第一种方法
    head={}
    head[‘User-Agent‘]=‘Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36‘
    ‘‘‘

    data={}
    #开发者工具里有,i和doctype键不可少
    data[‘i‘]=content
    data[‘from‘]=‘AUTO‘
    data[‘to‘]=‘AUTO‘
    data[‘smartresult‘]=‘dict‘
    data[‘client‘]=‘fanyideskweb‘
    data[‘salt‘]=‘15695569180611‘
    data[‘sign‘]=‘5b0565493d812bc5e713b895c12d615d‘
    data[‘doctype‘]=‘json‘
    data[‘version‘]=‘2.1‘
    data[‘keyfrom‘]=‘fanyi.web‘
    data[‘action‘]=‘FY_BY_REALTTIME‘

    #将字典类型的请求数据转化为url编码,并将编码类型转变为‘utf-8‘类型
    data=urllib.parse.urlencode(data).encode(‘utf-8‘)

    ‘‘‘
    第一种方法
    req=urllib.request.Request(url,data,head)
    ‘‘‘
    #第二种方法设置User Agent
    #创建Request对象
    req=urllib.request.Request(url,data)
    req.add_header(‘User-Agent‘,‘Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36‘)

    #传入创建好的Request对象
    response=urllib.request.urlopen(req)

    #读取响应信息并解码
    html=response.read().decode(‘utf-8‘)

    #使用json将字符串转化成字典
    target=json.loads(html)

    #结果在key=‘translateResult‘的三层列表的key=‘tgt‘中
    print("翻译结果:%s" %(target[‘translateResult‘][0][0][‘tgt‘]))

    #5秒一次
    time.sleep(5)
    

原文地址:https://www.cnblogs.com/-jiandong/p/11600927.html

时间: 2024-08-29 06:26:10

python爬有道翻译的相关文章

python爬取百度翻译返回:{'error': 997, 'from': 'zh', 'to': 'en', 'query 问题

解决办法: 修改url为手机版的地址:http://fanyi.baidu.com/basetrans User-Agent也用手机版的 测试代码: # -*- coding: utf-8 -*- """ ------------------------------------------------- File Name: requestsGet Description : 爬取在线翻译数据s Author : 神秘藏宝室 date: 2018-04-17 --------

【Python】Python利用有道翻译开发API应用示例

Python源码是关于Python利用有道翻译开发API应用示例.这是一个很有意思又简单的API应用练习题,方法中用到了有道词典开放API应用,合成的类似于命令行词典应用Python小程序.功能简单,但效果却很好. 这里要注意的是:有道API的请求频率限制,限制频率为每小时1000次,如果超过限制会被封禁. 提示:如果想一直用这个可以自己申请一个KEY,申请的过程非常简单的,只要替换原有的KEY_FROM和KEY就可以了. Python利用有道翻译开发API应用示例,源码如下: #!/usr/b

Python制作有道翻译小工具

该工具主要是利用了爬虫,爬取web有道翻译的内容. 然后利用简易GUI来可视化结果. 首先我们进入有道词典的首页,并点击翻译结果的审查元素 之后request响应网页,并分析网页,定位到翻译结果. 使用tkinter来制作一个建议的GUI 期间遇到的一个问题则是如何刷新翻译的结果,否则的话会在text里一直累加翻译结果. 于是,在mainloop里面用到了T1.delete方法,来每次删除TEXT里的内容. import urllib.request import urllib.parse im

python调用有道翻译api实现翻译

通过调用有道翻译的api,实现中译英.其他语言译中文 代码: # coding=utf-8 import urllib import urllib2 import json import time import hashlib class YouDaoFanyi: def __init__(self, appKey, appSecret): self.url = 'https://openapi.youdao.com/api/' self.headers = { "User-Agent"

python 爬取百度翻译进行中英互译

感谢RoyFans 他的博客地址http://www.cnblogs.com/royfans/p/7417914.html import requests def py(): url = 'http://fanyi.baidu.com/v2transapi/' while True: print('感谢百度翻译,禁止用于商业用途') print('----------------------------') content=input("中译英请输入1,英译中请输入2,退出请输入Q\n"

爬有道翻译

import urllib.requestimport urllib.parseimport jsoncontent=input('请输入你要翻译文本\n')data={}data['i'] = contentdata['from'] = 'AUTO'data['to'] = 'AUTO'data['smartresult'] = 'dict'data['client'] = 'fanyideskweb'data['salt'] = 'f'data['sign'] = 'sign'data['d

使用python2爬取有道翻译

爬虫的核心思想:模拟浏览器正常访问服务器,一般情况只要浏览器能访问的,都可以爬,如果被反爬,则考虑反复测试添加Request Header数据,知道可以爬取为止. 反爬思路目前知道的有:User-Agent,Cookie,Referer,访问速度,验证码,用户登录及前端js代码验证等.本例遇到js验证 User-Agent Referer Cookie共计4种反爬机制. 关键部分是,参数headers和data的构造,headers要进行反复测试,data数据里面的变量查找思路. 参考资料: 用

爬虫新手学习2-爬虫进阶(urllib和urllib2 的区别、url转码、爬虫GET提交实例、批量爬取贴吧数据、fidder软件安装、有道翻译POST实例、豆瓣ajax数据获取)

爬虫新手学习1-爬虫基础 1.urllib和urllib2区别实例 urllib和urllib2都是接受URL请求相关模块,但是提供了不同的功能,两个最显著的不同如下: urllib可以接受URL,不能创建设置headers的Request类实例,urlib2可以. url转码 https://www.baidu.com/s?wd=%E5%AD%A6%E7%A5%9E python字符集解码加码过程: 2.爬虫GET提交实例 #coding:utf-8 import urllib #负责url编

python爬虫(10)身边的翻译专家——获取有道翻译结果

本文目的:使用python 实现翻译效果 思路:有道翻译可以直接翻译内容,观察它的网页内容以及URL可以发现,它的基本url 和将要翻译的内容组合起来就是最后翻译的页面 比如: 有道中英文翻译的网址是:http://dict.youdao.com/ 将要翻译的内容是: I'm a Chinese 点击一下翻译,然后出现的含有翻译结果页面的地址是:  http://dict.youdao.com/w/eng/I'm%20a%20chinese/#keyfrom=dict2.index 虽然这个网址