python小说在线阅读其他功能添加

首先实现以下两个功能:

小说搜索无结果以及小说搜索后的翻页。

这是目录搜索模块:

def shousuo(s1,S1):#搜索模块,s1 书名 S1页码
    S1 = str(S1)#将数字转换成字符型
    url1 = 'http://zhannei.baidu.com/cse/search?s=5513259216532962936&entry=1&q=' + s1 +'&p='+ S1+'&s=5513259216532962936&entry=1'
    shousuo = requests.get(url1)
    shousuo.encoding = 'utf-8'#将网页转换成utf—8
    Shousuo = shousuo.text#将网页转换成文本形式
    pattern1 = ''
    iteams1 = re.findall(pattern1, Shousuo)
    for a1 in iteams1:
        print('书名:' + a1[1] + '   网址:' + a1[0])
    return iteams1

s1 为书名 S1 为页码。

主程序:

while 1:  
    print('请输入书名:')  
    s1 =input()  
    S1 = 0  
    ITEAM1 = shousuo(s1=s1, S1=S1)  
    print('请选择书:')  
    s2 = input()  
    url2 =  ITEAM1[int(s2)-1][0]  
    ITEAM2 = mulu(url2=url2)  

我们从主程序更改。

程序运行到:

ITEAM1 = shousuo(s1=s1, S1=S1)

会显示搜索结果的第一页书名目录。如果没有搜索到相关书籍,ITEAM1这个列表应该为空列表,只需要判断列表长度就可以了。

程序改为:

while 1:  
    print('请输入书名:')  
    s1 =input()  
    S1 = 0  
    ITEAM1 = shousuo(s1=s1, S1=S1)
    if len(ITEAM1) == 0:
        print('查无此书,请重新输入')
        continue 
    print('请选择书:')  
    s2 = input()  
    url2 =  ITEAM1[int(s2)-1][0]  
    ITEAM2 = mulu(url2=url2)  

如果要翻页,选择下一页的书名列表,只需改变S1的值,我这定义s为上一页,x为下一页。

判断s2输入是否含有s或x就可以实现翻页功能。

程序改为:

while 1:  
    print('请输入书名:')  
    s1 =input()  
    S1 = 0  
    ITEAM1 = shousuo(s1=s1, S1=S1)
    if len(ITEAM1) == 0:
        print('查无此书,请重新输入')
        continue 
    print('请选择书:')
    while 1:  #这里不光选择书,也涉及到翻页。可能要多次用到以下模块。所以在此加个循环。
        s2 = input()
        if s2 == 'x': #如果输入‘x’ 下一页
            S1 += 1
            ITEAM1=shousuo(s1=s1,S1=S1) #将ITEAM1这个列表转换成下一页的信息。
            if len(ITEAM1) == 0: #如果下一页列表为空
                print('无下一页')
                S1 -= 1
                ITEAM1 =shousuo(s1=s1,S1=S1) #ITEAM1列表将重新获取原来网页信息
        elif s2 == 's': #以下内容同上
            S1 -= 1
            ITEAM1=shousuo(s1=s1,S1=S1)
            if len(ITEAM1) == 0:
                print('无上一页')
                S1 += 1
            ITEAM1 =shousuo(s1=s1,S1=S1)   
        url2 =  ITEAM1[int(s2)-1][0]  
        ITEAM2 = mulu(url2=url2) 

翻页功能到此就可以实现了,但还有个小问题。一页只含有10个或10个以下的书名目录。如果输入11或超过页面数量的数字,程序就会挂。所以还要添加条件。

while 1:  
    print('请输入书名:')  
    s1 =input()  
    S1 = 0  
    ITEAM1 = shousuo(s1=s1, S1=S1)
    if len(ITEAM1) == 0:
        print('查无此书,请重新输入')
        continue 
    print('请选择书:')
    while 1:  #这里不光选择书,也涉及到翻页。可能要多次用到以下模块。所以在此加个循环。
        s2 = input()
        if s2 == 'x': #如果输入‘x’ 下一页
            S1 += 1
            ITEAM1=shousuo(s1=s1,S1=S1) #将ITEAM1这个列表转换成下一页的信息。
            if len(ITEAM1) == 0: #如果下一页列表为空
                print('无下一页')
                S1 -= 1
                ITEAM1 =shousuo(s1=s1,S1=S1) #ITEAM1列表将重新获取原来网页信息
        elif s2 == 's': #以下内容同上
            S1 -= 1
            ITEAM1=shousuo(s1=s1,S1=S1)
            if len(ITEAM1) == 0:
                print('无上一页')
                S1 += 1
            ITEAM1 =shousuo(s1=s1,S1=S1)
        elif int(s2)<=len(shuliebiao):   #判断输入的数字是否小于书名数量
            url2 =  ITEAM1[int(s2)-1][0]  #获取小说的网址
            ITEAM2 = mulu(url2=url2)  #显示小说的目录并保存在ITEAM2列表里
以上, 小说搜索无结果以及小说搜索后的翻页的功能都已实现。

大概思路就是这样。程序有可能有bug,老早以前的程序,我又改了点内容。可能拼写或缩进有错误。见谅。


现在解决目录搜索问题。

就如我搜索结果如图:

python小说在线阅读其他功能添加_第1张图片

最新章节为第一千六百六十一章,但我输入1661,出来的是第一千六百四十八章。

这就说明ITEAM2这个列表里有许多重章。要解决这个问题也很简单。

直接在ITEAM2内搜索章节名称。

将搜索后的内容放在一个新的列表ITEAM里

            while 1:
                s3 = input() #s3为章节选择
                
                if s3.isdigit() : #如果输入是数字,则是章节选择。
                    if ITEAM != '': #如果进行过章节的搜索
                        url3 = ITEAM[int(s3) - 1][0] #将搜索后新列表内的网址传给url3
                        ITEAM2 = ITEAM #将搜索后的列表赋值给ITEAM2
                    else:  #如果没进行章节搜索,则在原列表里选择
                        url3 = ITEAM2[int(s3)-1][0]
                    print(ITEAM2[int(s3) - 1][1])
                    xiaoshuo(url3=url3)
                else: #如果输入的不是数字
                    ITEAM = []#建立一个新的空列表
                    for i in range(0, len(ITEAM2) - 1):#循环整个ITEAM2
                        if s3 in ITEAM2[i][1]: #找到与输入相符的内容
                            print(ITEAM2[i][1])#输出章节名称
                            ITEAM.append(ITEAM2[i])#添加进新列表

通过搜索功能,可以完成章节的准确查找。

例如搜索第一百一十 ,就将包含一百一十字样的章节输出:

python小说在线阅读其他功能添加_第2张图片

如果想直接进入小说最新章节,不用进行搜索。直接设置‘z’为最新章节的输入。

只需添加以下程序

                if s3 == 'z':
                    url3 = ITEAM[-1][0]
                    print(ITEAM2[-1][1])
                    xiaoshuo(url3=url3)

因为要先判断是否跳转进最新章节,所以要将

if s3.isdigit() : 改为 elif s3.isdigit() :

添加效果如图:

python小说在线阅读其他功能添加_第3张图片

你可能感兴趣的:(python小说在线阅读其他功能添加)