python制作查找單詞翻譯的腳本


       本人由於英語渣,在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/  謝謝!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM