|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
我在爬一个小说网站的时候,突然想到一个问题:
首先:
小说网站里小说时分类的
比如:仙侠、都市、言情
然后:仙侠类里有:x1、x2、x3、x4、x5、x6等小说
然后:
我已经把小说类和小说名爬取了,建了个字典
novel ={'仙侠':['x1','x2','x3','x4','x5','x6'],'都市':['d1','d2','d3'],'言情':['y1','y2']}
目的:
我是想在爬取小说的前提供一个选择:
1、首先打印类别供选择
2、输入类别后,打印该类下小说名录
3、然后执行爬取相应小说操作
以上都简单
但为了提高体验:我想附加两个需求
第一:
1、在第一步打印类别后,本是输入类别的时候,也可以直接输入小说名
2、这样直接进行小说的爬取操作。
第二:
1、爬取完小说后,并部退出程序,而是返回上一步骤。(如果是在打印类别这一步,变再打印类别。如果在小说某类小说名录步骤,就打印相应小说名录。)
以下是我想出的代码:
- novel ={'仙侠':['x1','x2','x3','x4','x5','x6'],'都市':['d1','d2','d3'],'言情':['y1','y2']}
- value = []
- for i in novel.values():
- value.extend(i)
- def begin(name):
- print('正在爬取小说:'+ name)
- no = 0
- while True:
- if no == 0:
- print(list(novel.keys()))
- chooce = input('你要哪类小说:(可直接输入小说名,输入exit退出):')
- if chooce == 'exit':
- exit()
- elif chooce in list(novel.keys()):
- no += 1
- print(novel[chooce])
- nonvel_name = input('你要爬取哪部小说(输入quit,返回上一步):')
- if nonvel_name == 'quit':
- no = 0
- continue
- elif nonvel_name == 'exit':
- exit()
- elif nonvel_name in novel[chooce]:
- begin(nonvel_name)
- print(no)
- else:
- print('小说%s不存在'%chooce)
- elif chooce in value:
- begin(chooce)
- no = 0
- else:
- print('小说%s不存在' % chooce)
- if no == 1:
- print(novel[chooce])
- nonvel_name = input('你要爬取哪部小说(输入quit,返回上一步,输入exit退出):')
- if nonvel_name == 'quit':
- no = 0
- continue
- elif nonvel_name == 'exit':
- exit()
- elif nonvel_name in novel[chooce]:
- begin(nonvel_name)
- else:
- print('小说%s不存在' % chooce)
复制代码
但是我觉得上面代码太啰嗦了,不简洁,也不明了。请问下大神有么有更清晰简洁的代码,实现上面的需求? |
|