使用Urllib2制作有道翻译器

简介:        今天是学习爬虫的第二天了,看了网上很多初学者都喜欢爬取字典翻译。确实,有一个自己随时随地使用的翻译神器,省去了打开浏览器输入网址的那些繁琐,也腾出了不少时间。

       今天是学习爬虫的第二天了,看了网上很多初学者都喜欢爬取字典翻译。确实,有一个自己随时随地使用的翻译神器,省去了打开浏览器输入网址的那些繁琐,也腾出了不少时间。在这里我选择的是有道翻译,相比于百度翻译来说,它的特点就是使用了post请求来获取json格式数据,而百度翻译使用的是get请求。因为博主暂时还处于爬虫的入门阶段,而网上的入门资料和图书馆借阅的书籍还是python2相对多一些,所以我使用的库也是urllib2和urllib,但后面还是肯定会转到python3,毕竟python2到2020年官方就会停止支持了,还有一年多的时间。

1.分析post请求的URL:http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule

2.查看Form Data

    其为post请求的数据,将其粘帖到sublime编辑器下,使用正则替换,将其转化为字典的形式

"i": "python",
"from": "AUTO",
"to": "AUTO",
"smartresult": "dict",
"client": "fanyideskweb",
"salt": "1529759898442",
"sign": "8fa19ef594cd75bff554ef1f03dc5901",
"doctype": "json",
"version": "2.1",
"keyfrom": "fanyi.web",
"action": "FY_BY_REALTIME",
"typoResult": "false",

3.代码实现

#!/usr/bin/env python
# coding=utf-8

import urllib
import urllib2
def youdao():
    # 构建url链接
    # url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'
    # 这里要去掉?号前面的_o,不然会进行加密算法,导致失败
    url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
    # 构建请求头
    headers = {
        "User-Agent" : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:59.0) Gecko/20100101 Firefox/59.0'
    }
    words = raw_input("请输入要翻译的内容:")
    # 构建请求体
    format_data = {
        'i': words,
        'from':'AUTO',
        'to':'AUTO',
        'smartresult':'dict',
        'client':'fanyideskweb',
        'salt':'1526368137702',
        'sign':'f0cd13ef1919531ec9a66516ceb261a5',
        'doctype':'json',
        'version':'2.1',
        'keyfrom':'fanyi.web',
        'action':'FY_BY_REALTIME',
        'typoResult':'false'
    }
    # 进行url编码
    format_data = urllib.urlencode(format_data)
    # 获取request文件(传入了data参数,就是post请求)
    request = urllib2.Request(url, data = format_data, headers = headers)
    # 打开请求文件
    response = urllib2.urlopen(request)
    # 读取文件内容
    content = response.read()
    content = eval(content)
    ret = content["translateResult"][0][0]['tgt']
    print(ret)
    #return ret
if __name__ == "__main__":
    youdao()

 

相关文章
|
10天前
|
安全 测试技术 API
urllib3库的介绍以及使用
`urllib3`是Python的HTTP库,支持HTTP/HTTPS,自动管理连接池,提供代理、证书配置,重定向处理等功能。其优势在于连接池管理和HTTPS支持。要安装,使用`pip install urllib3`。发起HTTP请求如`http.request('GET', 'http//example.com')`。处理响应包括状态码、头部和内容。高级功能包括连接池管理、超时和重试策略。注意线程安全、资源释放及错误处理。官方文档和相关文章可提供更多信息。
22 0
|
2月前
|
数据采集 应用服务中间件 数据安全/隐私保护
Python爬虫urllib详解#3
摘要:urllib深度解析与高级用法、robots协议分析【2月更文挑战第9天】
51 1
Python爬虫urllib详解#3
|
7月前
|
编解码 Python
urllib库(中)
urllib库(中)
33 0
|
11月前
|
数据处理 Python
使用urllib库简单入门
使用urllib库简单入门
|
应用服务中间件 nginx Python
|
前端开发 Python
urllib的一些使用案例
urllib的一些使用案例
106 0
|
数据采集 编解码 Python
urllib的基础使用方法
urllib的基础使用方法
111 0
|
数据采集 Python
爬虫第一次笔记 urllib的基本使用 urllib一个类型,六个方法 urllib下载 urllib请求对象的定制
爬虫第一次笔记 urllib的基本使用 urllib一个类型,六个方法 urllib下载 urllib请求对象的定制
86 0
爬虫第一次笔记 urllib的基本使用 urllib一个类型,六个方法 urllib下载 urllib请求对象的定制
|
数据采集 Python
Python爬虫:urllib内置库基本使用
Python爬虫:urllib内置库基本使用
|
数据采集 JSON 数据格式
python爬虫urllib3模块详解
python爬虫urllib3模块详解
425 1
python爬虫urllib3模块详解