1. 程式人生 > >Python實現的命令列查詢有道詞典

Python實現的命令列查詢有道詞典

         因為要考英語四級,所以我今天一大早就起來被英語單詞,但是作為英語渣渣的我,只能是在網頁上挨個查單詞的意思。查的多了,心生厭倦,便想著如何才能在終端下查單詞,那樣速度不就很快了?

          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,發完部落格還要繼續背單詞【傷心】【傷心】【傷心】