python製作查詢單詞翻譯的指令碼

中大黑熊發表於2014-07-07

       本人由於英語渣,在linux底下經常看文件,但是有沒有想有道詞典這種軟體,所以遇到不懂的單詞只能手動複製貼上在網上查詢,這樣就很不方便,學了python之後,就試著自己嘗試下個在命令列下查詢單詞翻譯的指令碼。

       在我眼裡,實現上面這個要求的指令碼語言分幾塊完成:

       一是選好一個單詞翻譯的網站,優先選擇GET方法的(程式碼寫起來比較方便),如果是POST方法也不是沒有辦法,只是要自己新建一個POST請求,為此我就找到了一個用GET方法查詢單詞的神器網站——線上翻譯_線上詞典_金山詞霸_愛詞霸英語,用起來就很爽。

       二是把對應結果那一頁的html程式碼爬下來,然後用適當的正規表示式進行匹配,把結果記錄下來。

       最後就是把結果輸出到cmd中。程式碼如下:

#!/usr/bin/env python
#-*- coding:utf-8 -*-

import urllib
import sys
import re
from bs4 import BeautifulSoup

URL = 'http://www.iciba.com/'

while True:
    try:
        word = raw_input("請輸入你要查詢的單詞(或者按CTRL+D或CTRL+C退出):")
    except KeyboardInterrupt:
        print "\n退出。"
        sys.exit(1)
    except EOFError:
        print "\n退出。"
        sys.exit(1)
    if not word:
        break
    url = URL + word
    #查詢單詞
    f = urllib.urlopen(url)
    reader = f.readlines()
    #用正規表示式進行匹配
    #這裡我用BeautifulSoup進行標籤的解析
    soup = BeautifulSoup(''.join(reader))   #新建一個soup物件
    #先進行一般釋義的抓取
    results1 = soup.findAll("div",{"class":"group_pos"})
    if not results1:
        print '不好意思,找不到你要查詢的單詞'
        continue
    #對每塊進行解析
    sys.stdout.write('\n')   #換行
    for item in results1:
        aa = item.findAll("strong",{"class":"fl"})
        bb = item.findAll("span",{"class":"label_list"})
        #二重迴圈
        for i in range(len(aa)):
            print aa[i].contents[0],
            dd = bb[i].findAll("label")
            for ee in dd:
                print ee.contents[0],
            sys.stdout.write('\n') #分好行 
    #查詢網路釋義
    results2 = soup.findAll("div",{"class":"net_paraphrase"})
    print "網路釋義:",
    ff = results2[0].findAll("li")
    for item in ff:
        print item.contents[0],
    sys.stdout.write('\n')   #換行
    sys.stdout.write('\n')   #換行

 

唉,本來以為很快搞定,結果花了兩個小時,自己還是太弱了,對python還是不夠熟悉。

執行如下:

dzhwen@deng:~$ python find.py
請輸入你要查詢的單詞(或者按CTRL+D或CTRL+C退出):banana

n. 香蕉; 芭蕉屬植物; 喜劇演員
網路釋義: 香蕉; 香蕉甜酒; 噴鼻蕉; 芭蕉屬植物

請輸入你要查詢的單詞(或者按CTRL+D或CTRL+C退出):orange

n. 桔子,橙子; [植]桔樹; 橙色; 桔色
adj. 橙色的; 橘色的; 桔紅色的
網路釋義: 桔色; 橙色的; 桔黃; 橙

請輸入你要查詢的單詞(或者按CTRL+D或CTRL+C退出):
退出。

轉載請註明出處:http://www.cnblogs.com/sysu-blackbear/  謝謝!

 

相關文章