码迷,mamicode.com
首页 > 编程语言 > 详细

python实现查有道词典

时间:2017-10-04 23:52:11      阅读:401      评论:0      收藏:0      [点我收藏+]

标签:翻译   request   mil   源代码   有道   博客   rip   xxxxx   youdao   

         因为要考英语四级,所以我今天一大早就起来被英语单词,但是作为英语渣渣的我,只能是在网页上挨个查单词的意思。查的多了,心生厌倦,便想着如何才能在终端下查单词,那样速度不就很快了?

          NOW,我仔细观察每次查询时,浏览器地址栏中URL的变化,发现每次浏览器提交的URL都是"http://www.youdao.com/w/eng/"xxxxx"/#keyfrom=dict2.index"(其中的xxxxx代表要查的单词),有了这个发现,那我们将URL指向的网页下载下来,然后提取我们需要的信息不就得了?

     emmmm,这个工作交给Python来做是最合适不过的了

       基本步骤:导入requests模块与re模块,首先将URL地址指向的网页下载下来,然后利用Python强大的正则表达式提取单词经过翻译后的信息。因为要英汉互译,所以我写了两段代码,第一个是汉译英,第二个是英译汉。

源代码

汉译英:

import requests,re

def download(): word=input("请输入您要翻译的中文词语:\n") url="http://dict.youdao.com/w/eng/"+word+"/#keyfrom=dict2.index" #合并URL地址 html=requests.get(url).content.decode(utf-8) #得到服务器的相应信息后将其转码为UTF-8 return html def analysis(): list1=re.findall("详细释义.+<p class=\"collapse-content\">",download(),re.S) #这里对html字符串进行第一步加工,截取大概的信息 list2=re.findall(" [a-zA-Z ]+",str(list1)) #将上面加工后的字符串进一步加工,直接提取到所有翻译后的单词信息 print("翻译结果:\n") for i in list2: i=i.strip() #因为第二步加工后的信息并不干净,得到的单词前面会有空格,这里将空格删去 print(i) if __name__ == __main__:   while(1):
    analysis()

英译汉:

import requests,re

def download():
    word=input("请输入您要翻译的英文单词:\n")
    url="http://dict.youdao.com/w/eng/"+word+"/#keyfrom=dict2.index"
    html=requests.get(url).content.decode(utf-8)
    return html

def analysis():
    list1=re.findall("详细释义.+<p class=\"collapse-content\">",download(),re.S)
    list2=re.findall("                \w+",str(list1))       #只有此处代码与汉译英代码不同,因为是提取汉字,所以这里要用\w来匹配汉字
    print("翻译结果:\n")
    for i in list2:
        i=i.strip()
        print(i)

if __name__ == __main__:
  while(1):
    analysis()

OK,来看看效果吧:

技术分享

技术分享

 

emmmm,OK,发完博客还要继续背单词【伤心】【伤心】【伤心】

python实现查有道词典

标签:翻译   request   mil   源代码   有道   博客   rip   xxxxx   youdao   

原文地址:http://www.cnblogs.com/nkqlhqc/p/7627581.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!