45fan.com - 路饭网

搜索: 您的位置主页 > 网络频道 > 阅读资讯:怎么样使用Python从有道词典网页获取单词翻译?

怎么样使用Python从有道词典网页获取单词翻译?

2016-08-24 07:25:32 来源:www.45fan.com 【

怎么样使用Python从有道词典网页获取单词翻译?

从有道词典网页获取某单词的中文解释。

import re
import urllib

word=raw_input('input a word\n')
 
url='http://dict.youdao.com/search?q=%s'%word
 
content=urllib.urlopen(url)
 
pattern=re.compile("</h2.*?</ul>",re.DOTALL)
 
result=pattern.search(content.read()).group()
pattern2=re.compile('<li>.*?</li>')
for i in pattern2.findall(result):
 print i.strip('<li>').strip('</li>').decode('utf-8')

再给大家分享一个命令行版的

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date : 2014-04-03 21:12:16
# @Function: 有道翻译命令行版
# @Author : BeginMan

import os
import sys
import urllib
import urllib2
reload(sys)
sys.setdefaultencoding("utf-8")
import simplejson as json
import platform
import datetime

API_KEY = '******'
KEYFORM = '******'
 
def GetTranslate(txt):
 url = 'http://fanyi.youdao.com/openapi.do'
 data = {
 'keyfrom': KEYFORM,
 'key': API_KEY,
 'type': 'data',
 'doctype': 'json',
 'version': 1.1,
 'q': txt
 }
 data = urllib.urlencode(data)
 url = url+'?'+data
 req = urllib2.Request(url)
 response = urllib2.urlopen(req)
 result = json.loads(response.read())
 return result
 
def Sjson(json_data):
 query = json_data.get('query','')    # 查询的文本
 translation = json_data.get('translation','') # 翻译
 basic = json_data.get('basic','')    # basic 列表
 sequence = json_data.get('web',[])    # 短语列表
 phonetic,explains_txt,seq_txt,log_word_explains = '','','',''
 
 # 更多释义
 if basic:
  phonetic = basic.get('phonetic','')   # 音标
  explains = basic.get('explains',[])   # 更多释义 列表
  for obj in explains:
   explains_txt += obj+'\n'
   log_word_explains += obj+',' 
 # 句子解析
 if sequence:
  for obj in sequence:
   seq_txt += obj['key']+'\n'
   values = ''
   for i in obj['value']:
    values += i+','
   seq_txt += values+'\n'
  
 print_format = '*'*40+'\n'
 print_format += u'查询对象: %s [%s]\n' %(query,phonetic) 
 print_format += explains_txt
 print_format += '-'*20+'\n'+seq_txt
 print_format += '*'*40+'\n'
 print print_format
 choices = raw_input(u'是否写入单词本,回复(y/n):')
 if choices in ['y','Y']:
  filepath = r'/home/beginman/pyword/%s.xml' %datetime.date.today()
  if (platform.system()).lower() == 'windows':
   filepath = r'E:\pyword\%s.xml' %datetime.date.today()
  fp = open(filepath,'a+')
  file = fp.readlines()
  if not file:
   fp.write('<wordbook>\n')
   fp.write(u""" <item>\n <word>%s</word>\n <trans><![CDATA[%s]]></trans>\n <phonetic><![CDATA[[%s]]]></phonetic>\n <tags>%s</tags>\n <progress>1</progress>\n </item>\n\n""" %(query,log_word_explains,phonetic,datetime.date.today()))
  fp.close()
  print u'写入成功.'

def main():
 while True:
  txt = raw_input(u'请输入要查询的文本:\n')
  if txt:
   Sjson(GetTranslate(txt))

if __name__ == '__main__':
 main()

以上就是本文的所有内容了,希望大家能够喜欢


本文地址:http://www.45fan.com/a/question/66742.html
Tags: 获取 python 网页
编辑:路饭网
关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部