From e3e76e22dbca89caae89734686093a4c23c605b3 Mon Sep 17 00:00:00 2001 From: Javan Zhu Date: Fri, 12 Apr 2019 21:16:54 +0800 Subject: [PATCH] Fix fail to query word from cambridge ee. --- addons21/fastwq/service/dict/cambridge.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/addons21/fastwq/service/dict/cambridge.py b/addons21/fastwq/service/dict/cambridge.py index 42be6a8..927c199 100644 --- a/addons21/fastwq/service/dict/cambridge.py +++ b/addons21/fastwq/service/dict/cambridge.py @@ -56,7 +56,12 @@ class Cambridge(WebService): header_found = True # 义 - senses = element.find_all('div', id=re.compile("english-chinese-simplified*")) + if 'english-chinese-simplified' in self._get_url(): + senses = element.find_all('div', id=re.compile("english-chinese-simplified*")) + elif 'english-chinese-traditional' in self._get_url(): + senses = element.find_all('div', id=re.compile("english-chinese-traditional*")) + else: + senses = element.find_all('div', id=re.compile("cald4*")) # 词性 pos = element.find('span', class_='pos') gram = element.find('span', class_='gram') @@ -68,9 +73,9 @@ class Cambridge(WebService): pos_2 = sense.find('span', class_='pos') gram_2 = sense.find('span', class_='gram') if pos_2 is not None: - pos_gram = (pos_2.get_text() if pos_2 else '') + (gram_2.get_text() if gram else '') + pos_gram = (pos_2.get_text() if pos_2 else '') + (gram_2.get_text() if gram_2 else '') - sense_body = sense.find('div', class_='sense-body') + sense_body = sense.find('div', class_=re.compile("sense-body|runon-body pad-indent")) if sense_body: l = result['def_list'] @@ -86,6 +91,8 @@ class Cambridge(WebService): phrase_title = block.find('span', class_='phrase-title') phrase_name = phrase_title.get_text() if phrase_title else None pass + elif block_type == 'runon-body': + pass else: continue @@ -100,7 +107,7 @@ class Cambridge(WebService): '{0}'.format(i.get_text()) if i else '', '{0}'.format(d.get_text()) if d else u'', - u'{0}'.format(tran.get_text()) if tran else u'', + '{0}'.format(tran.get_text()) if tran else '', u''.join( u'
{0}
'.format(e.get_text()) if e else u'' for e in examps