Python有道英译汉词典

选择有道翻译是因为相对好爬。

方案一

在词典网页中直接抓取词义。
参考资料: https://www.cnblogs.com/nkqlhqc/p/7627581.html
特点:比较简单易行,不需要涉及与网页的交互。
程序:

# 有道词典  英译汉
# 参考资料: https://www.cnblogs.com/nkqlhqc/p/7627581.html
# 关于re.compile(): https://www.cnblogs.com/nomorewzx/p/4203829.html
import requests     # 抓取网页的第三方库
import re           # 正则表达式的库

print("来自有道词典,请输入需要查询的英语单词\n")
while (True):
    word = input(">>")
    url = "http://dict.youdao.com/w/"+word+"/#keyfrom=dict2.top"
    html = requests.get(url).content.decode('utf-8')       # 访问网址

    try:
        partlist = re.findall('class="trans-container"(.*?)class="additional"', html, re.S)     # 初步筛选
    except:
        print("没找到\n")
    else:
        reg1 = '<li>(.*?)</li>'    # 模糊匹配,找<li>与</li>中间的部分 
        reg2 = re.compile(reg1)    # 使得匹配更加高效
        try:
            wordlist = re.findall(reg2, str(partlist[0]))   # 那串列表中的第一页是有效的
        except:
            print("没找到\n")
        else:
            for x in wordlist:
                print("   "+x)
            print("\n")

结果图:


程序1的结果图

另一个程序:
用了爱词霸网。

# 爱词霸词典  英译汉
# 参考资料: https://www.cnblogs.com/nkqlhqc/p/7627581.html
# 关于re.compile(): https://www.cnblogs.com/nomorewzx/p/4203829.html
import requests     # 抓取网页的第三方库
import re           # 正则表达式的库

print("来自有道词典,请输入需要查询的英语单词\n")
while (True):
    word = input(">>")
    url = "http://www.iciba.com/"+word
    html = requests.get(url).content.decode('utf-8')       # 访问网址

    try:
        partlist = re.findall('<ul class="base-list switch_part" class="">(.*?)</ul>', html, re.S)      # 初步筛选
    except:
        print("没找到\n")
    else:
        reg1 = '<span>(.*?)</span>'    # 模糊匹配,找<li>与</li>中间的部分 
        reg2 = re.compile(reg1)    # 使得匹配更加高效
        try:
            wordlist = re.findall(reg2, str(partlist))
        except:
            print("没找到\n")
        else:
            for x in wordlist:
                print("   "+x)
            print("\n")

结果图:


程序2的结果图

PS:程序中缩进太多,不好,python应多使用子函数。

方案二

使用POST向网页发送请求,避开反爬虫使用老版接口,即去掉url中的“_o”。
参考资料:
https://www.cnblogs.com/90zeng/p/python_translation.html(关于在哪里看POST的格式的)
http://blog.csdn.net/nunchakushuang/article/details/75294947(关于反爬虫)
http://blog.csdn.net/snszwh/article/details/78168660(关于老版接口)
特点:使用了POST进行网页交互,但放弃了反爬虫处理。
程序:

# 有道字典  英译汉
# 参考资料1: https://www.cnblogs.com/90zeng/p/python_translation.html
# 参考资料2:http://blog.csdn.net/nunchakushuang/article/details/75294947
# 参考资料3:http://blog.csdn.net/snszwh/article/details/78168660
import urllib.request
import urllib.parse
import json
import time
import random
import hashlib
import re

def get_html(word):
    url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"  # 重点是去掉这里的_o

    data = {}

    data['i'] = word
    data['from'] = 'AUTO'
    data['to'] = 'AUTO'
    data['smartresult'] = 'dict'
    data['client'] = 'fanyideskweb'
    data['salt'] = '1519801903001'
    data['sign'] = 'ea1617dd1a4772cd6f47b45bab7c2a0f'
    data['doctype'] = 'json'
    data['version'] = '2.1'
    data['keyfrom'] = 'fanyi.web'
    data['action'] = 'FY_BY_CLICKBUTTION'
    data['typoResult'] = 'false'
    data = urllib.parse.urlencode(data).encode('utf-8')

    request = urllib.request.Request(url=url, data=data, method='POST')
    response = urllib.request.urlopen(request)
    result_str = response.read().decode('utf-8')
    return result_str

def main():
    word = input('>>')
    result_str = get_html(word)
    target = json.loads(result_str)
    trans = re.findall('tgt\': \'(.*?)\'', str(target))
    print("   "+ str(trans[0])+"\n")  

if __name__ == "__main__":  
    print("来源:有道词典\n输入需要查询的词\n\n")
    while(True):
        main()

结果图:


程序3的结果图

方案三

这是涉及到反爬虫处理的一篇博客:http://blog.csdn.net/shadkit/article/details/79174948

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,391评论 25 707
  • # Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列...
    小迈克阅读 2,956评论 1 3
  • # Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列...
    aimaile阅读 26,436评论 6 428
  • 从未如此感受到传承的力量,与父亲的伟大。今天把父亲的钱印证转账,转到股票账户的那刻,才感受到自己的责任。父亲普普通...
    yichen大刀阅读 274评论 0 0
  • 毕业班研讨会 今天下午第四节,九年级教师要开会。我第一个跑到三楼,一个人没人,我徘徊在楼梯口。听到崔校长上来了,随...
    鸣鸥阅读 219评论 0 2