标题: [问题求助] 【已解决】想改进一个别人的有点词典的爬取程序,不懂Python [打印本页]
作者: 949825667@qq.co 时间: 2016-8-22 13:20 标题: 【已解决】想改进一个别人的有点词典的爬取程序,不懂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()
复制代码
作者: 949825667@qq.co 时间: 2016-8-22 13:21
上面的代码是我改了以后的,输入变成了从文本输入!但是输出的结果不会追加!
作者: 949825667@qq.co 时间: 2016-8-22 13:22
<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的判断?
作者: 949825667@qq.co 时间: 2016-8-22 13:39
我自己改了一下,可以累加输出了,但是怎么取消判断啊!我才看了几章Python
作者: 949825667@qq.co 时间: 2016-8-22 13:47
自己改了一下,取消了判断
作者: 949825667@qq.co 时间: 2016-8-22 15:15
我又厚颜无耻的来了,怎么让这个程序每处理1000个单词就休息一个小时呢?:dizzy::dizzy:能不能结合批处理呢
作者: pcl_test 时间: 2016-8-22 15:47
举个栗子- #每输出两个字母延时2秒
- import time
- j=0
- for i in ['a','b','c','d','e','f','g','h','i','j','k','l','m','n']:
- print i
- j+=1
- if j%2==0:time.sleep(2)
复制代码
作者: 949825667 时间: 2016-8-22 21:18
回复 7# pcl_test
多谢版主大人。。。我查了好久解决了,忘记回帖说一下了!阿里嘎多!
作者: 523066680 时间: 2016-8-23 09:21
本帖最后由 523066680 于 2016-8-23 09:26 编辑
有道还是有点?
哦,这个是在线爬取的。
我也做过一个在线查询的,Perl+终端版
http://bbs.bathome.net/thread-36111-1-1.html
有道离线字典拆解思路 以及 单独制作的查询工具
http://bbs.bathome.net/thread-40665-1-1.html
http://code-by.org/viewtopic.php?f=17&t=12
作者: 949825667@qq.co 时间: 2016-8-23 09:49
回复 9# 523066680
多谢多谢,请问版主知道怎么用正则匹配带连字符的单词么?比如seven-day
作者: 523066680 时间: 2016-8-23 10:00
回复 10# 949825667@qq.co
好像直接匹配没什么问题啊(perl- $abc = "---[seven-day]---";
-
- $abc =~ /seven-day/;
-
- print $&;
复制代码
seven-day
实在不行在 - 前面加上 \ 咯- $abc = "---[seven-day]---";
-
- $abc =~ /seven\-day/;
-
- print $&;
复制代码
作者: 949825667@qq.co 时间: 2016-8-23 10:12
回复 11# 523066680
通用型的- -,所有加连字符的单词!不过还是谢谢,暂时不考虑这个问题了! :victory: :victory:
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |