python电子英汉词典显示_python网页抓取之英汉字典
linux的字典本人實在用起來不舒服(stardict挺不錯的,但是界面好看些,功能簡單易用就好了)
,在線翻譯又得打開龐大的瀏覽器....就打算自己寫個,但是時間有限,為了簡單,
還是用python抓取網頁來的快些。本人用的必應字典。
獲取某個單詞解釋url是:
http://cn.bing.com/dict/search?q=word&go=&qs=bs&form=CM&mkt=zh-CN&setlang=ZH
其中的紅色word即是要翻譯“word”單詞。
代碼如下dic.py:python使用的是2.7.5版本
1 #!/usr/bin/python
2 importurllib2,sys3 from HTMLParser importHTMLParser4 from htmlentitydefs importname2codepoint5
6 classMyHTMLParser(HTMLParser): #解析html7 def __init__(self):8 HTMLParser.__init__(self)9 self.t=False10 self.trans=[]11 self.pr=False12 defhandle_starttag(self, tag, attrs):13 if tag=='div':14 for attr inattrs:15 if attr==('class','hd_prUS') or\16 attr==('class','hd_pr'):17 self.pr=True18 if tag=='span':19 for attr inattrs:20 if attr==('class','def'):21 self.t=True22 defhandle_data(self, data):23 ifself.t:24 self.trans.append(data)25 self.t=False26 ifself.pr:27 printdata28 self.pr=False29 defgetTrans(self):30 returnself.trans31 classtrans:32 _URL='http://cn.bing.com/dict/search'
33 def __init__(self):34 self.url=trans._URL+"?q=%s&go=&qs=bs&form=CM&mkt=zh-CN&setlang=ZH"
35 self.html=None36 defgetHtml(self,word): #獲取單詞翻譯的網頁37 self.url=self.url %word38 print word,":"
39 req =urllib2.Request(self.url)40 fd=urllib2.urlopen(req)41 self.html=fd.read()42 self.html=unicode(self.html,'utf-8')43 fd.close()44
45 defparseHtml(self): #解析調用46 parser =MyHTMLParser()47 self.html=parser.unescape(self.html)48 parser.feed(self.html)49 s=parser.getTrans()50 t=1
51 for i ins:52 print t,'.',i53 t+=1
54
55 if __name__=='__main__':56 t=trans()57 t.getHtml(sys.argv[1])58 t.parseHtml()59
終端操作:
05:07@:~/workspace$ ./dic.py action
action :
美 [??k?(?)n]
英 [??k?(?)n]1. 行動;行為;訴訟;戰斗2. 務必做3 . 動作;操作;作用
終端用起來也不甚方便,有時間把代碼搬進圖形程序中.....pyQt還是kivy等圖形庫,
用過pyQt,抽時間看看吧。
本人的注釋是寫博客后來加上去的,可以直接刪了,或者添加# -*- coding: utf-8 -*-
對于html的解析另一個不錯的模塊庫是BeautifulSoup,解析相當給力。但是需要自己安裝
這個庫。和上面代碼功能一樣,但是使用BeautifulSoup解析的。代碼如下:
1 #!/usr/bin/python
2 importurllib2,sys3 from BeautifulSoup importBeautifulSoup4 classMyHTMLParser:5 def __init__(self):6 self.trans=[]7 self.us=None8 self.uk=None9 self.define=True10 deffeed(self,html):11 parsed_html=BeautifulSoup(html)12 self.us=parsed_html.find('div',{'class':'hd_prUS'}).text13 self.uk=parsed_html.find('div',{'class':'hd_pr'}).text14 self.us=self.us.replace('?',' ')15 self.uk=self.uk.replace('?',' ')16 print self.us,',',self.uk17 self.define=parsed_html.findAll('span',{'class':'def'})18 for t inself.define:19 self.trans.append(t.text)20 defgetTrans(self):21 returnself.trans22 classtrans:23 _URL='http://cn.bing.com/dict/search'
24 def __init__(self):25 self.url=trans._URL+"?q=%s&go=&qs=bs&form=CM&mkt=zh-CN&setlang=ZH"
26 self.html=None27 defgetHtml(self,word):28 self.url=self.url %word29 print word,":"
30 req =urllib2.Request(self.url)31 fd=urllib2.urlopen(req)32 self.html=fd.read()33 fd.close()34
35 defparseHtml(self):36 parser =MyHTMLParser()37 parser.feed(self.html)38 s=parser.getTrans()39 t=1
40 for i ins:41 print t,'.',i42 t+=1
43
44 if __name__=='__main__':45 t=trans()46 t.getHtml(sys.argv[1])47 t.parseHtml()
View Code
總結
以上是生活随笔為你收集整理的python电子英汉词典显示_python网页抓取之英汉字典的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2017想要成功申卡 一定要远离这几种行
- 下一篇: 2017最新信用卡提额禁忌:六种用卡习惯