马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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)
但是我觉得上面代码太啰嗦了,不简洁,也不明了。请问下大神有么有更清晰简洁的代码,实现上面的需求? |