返回列表 发帖

[问题求助] 【已解决】想改进一个别人的有点词典的爬取程序,不懂Python

本帖最后由 949825667@qq.co 于 2016-8-30 16:45 编辑
#!/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 = '1542783714'
KEYFORM = 'dyzwordyoudao'
   
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 or n')
    if choices in ['y','Y']:
        filepath = r'/home/beginman/pyword/%s.xml' %datetime.date.today()
        if (platform.system()).lower() == 'windows':
            filepath = r'C:\Python27\%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'success.'
        
def main():
    f = open('1.txt','r')
    while True:
        line = f.readline()
        if line:
            txt = line
            Sjson(GetTranslate(txt))
if __name__ == '__main__':
    main()COPY
1

评分人数

上面的代码是我改了以后的,输入变成了从文本输入!但是输出的结果不会追加!

TOP

<wordbook>
    <item>
    <word>dentistry</word>
    <trans><![CDATA[n. 牙科学;牙医业,]]></trans>
    <phonetic><![CDATA[['dentɪstrɪ]]]></phonetic>
    <tags>2016-08-22</tags>
    <progress>1</progress>
    </item>
输出结果是这样的,按理说会不停的追加的!我没太看懂他的代码,还有怎么样才能取消他那个y or n的判断?

TOP

我自己改了一下,可以累加输出了,但是怎么取消判断啊!我才看了几章Python

TOP

自己改了一下,取消了判断

TOP

我又厚颜无耻的来了,怎么让这个程序每处理1000个单词就休息一个小时呢?:dizzy::dizzy:能不能结合批处理呢

TOP

回复 9# 523066680


    多谢多谢,请问版主知道怎么用正则匹配带连字符的单词么?比如seven-day

TOP

回复 11# 523066680


    通用型的- -,所有加连字符的单词!不过还是谢谢,暂时不考虑这个问题了! :victory: :victory:

TOP

返回列表