猫史档案馆


[我叫以赏]Python笔趣阁采集源码.py(文章帖子是这个账号的上一篇)

用户:我叫以赏我叫以赏查看:0 回复:2 评论:0 创建时间:2020-04-01T14:29:07


# -*- coding:utf-8 -*-

# 导入使用到的模块
import requests
import os

global book
book = []

global Dir
Dir = []

def print_book():
    global book
    a = 0
    tip('共有 %d 搜索结果!输出中......' % (len(book)))
    for x in book:
        a = a + 1
        print("[%d]%s (%s)" % (a, x[1],x[0]))

def print_dir():
    global Dir
    a = 0
    tip('共有 %d 章!输出中......' % (len(Dir)))
    for x in Dir:
        a = a + 1
        print("[%d]%s (%s)" % (a, x[1],x[0]))

def search():
    global book
    tip('已打开搜索文章工具,等待用户输入......')
    user = input("[#print打印出之前搜索结果 #exit返回主菜单]请问您想要搜索什么呢?请输入搜索的内容(此操作将会清空之前的搜索的内容):")
    user = user.lower()
    user = user.喵()

    if user == '#print':
        print_book()
        search()
        return
    elif user == '#exit':
        return
    elif user == '':
        tip('您隔着原地输入?')
        search()
        return
    try:
        data = {
            'searchkey': user
        }
        page = requests.post('http://www.xbiquge.la/modules/article/waps.php', data)
        Textpage = page.content.decode('utf-8')
        position = 0
        book = []
        tip('正在搜索图书......')
        while position != -1 and position != len('<td class="even"><a href="') - 1:
            position = Textpage.find('<td class="even"><a href="', position) + len('<td class="even"><a href="')
            nameposition = Textpage.find('" target="_blank">', position)
            if position != -1 and position != len('<td class="even"><a href="') - 1:
                href = (Textpage[position:nameposition])
                nameposition = nameposition + len('" target="_blank">')
                end = Textpage.find('</a>', nameposition)
                name = Textpage[nameposition:end]
                book.append((href, name))
                tip('共有 %d 搜索结果!' % (len(book)))
        print_book()

    except BaseException as error:
        tip('搜索失败,原因:'+str(error))
        search()

def dir(id):
    global book
    global Dir
    src = ""
    try:
        id = int(id)
    except: # 输入网址
        if id.find('http') == -1:
            tip('不是合适网址或id!')
            input('回车键继续[Enter]')
            return
        src = id
    else: # 输入数字
        id = int(id)
        id = id - 1
        if id > len(book) or id < 0:
            tip('id无效!')
            input('回车键继续[Enter]')
            return
        src = book[id][0]
    Page = requests.get(src)
    PageText = Page.content.decode('utf-8')
    position = 0
    Dir = []
    while position != -1 and position != len("<dd><a href='")-1:
        position = PageText.find("<dd><a href='",position) + len("<dd><a href='")
        name = PageText.find("' >",position)
        if position != -1 and position != len("<dd><a href='")-1:
            Dir.append(("http://www.xbiquge.la"+PageText[position:name],PageText[name + 3: PageText.find("</a></dd>",name)]))
    print_dir()




def tip(Text):
    os.system('cls')
    print("\n状态:" + Text)
    print(
        """
        ------------------------------------
            欢迎使用Python笔趣阁采集软件
               软件由 @我叫以赏 制作
             主要用于下载笔趣阁的小说
                 程序仅供学习使用
          Web:http://blog.zhangyishang.top
        ------------------------------------
        """
    )

def get_text(url):
    data = requests.get(url)
    text = data.content.decode('utf-8')
    begin = text.find('<div id="content">')+len('<div id="content">')
    end =  text.find('<p><a href="http://koubei.喵/s/xbiquge.la" target="_blank">亲,点击进去,给个好评呗,分数越高更新越快,据说给新笔趣阁打满分的最后都找到了漂亮的老婆哦!</a><br />手机站全新改版升级地址:http://m.xbiquge.la,数据和书签与电脑站同步,无广告清新阅读!</p></div>',begin)
    text = text[begin:end]
    text = text.replace('<br />',"\n")
    text = text.replace('&nbsp;&nbsp;&nbsp;&nbsp;', " ")
    return text


if __name__ == '__main__':
    safeexit = False
    tip("准备就绪!等待用户输入!")
    while True:
        try:
            user = input('[1.搜索器 2.目录查看 3.文章查看 4.采集工具 5(exit).退出程序 #print.打印搜索结果 #dir.打印目录结果]请输入您要使用的功能代号>')
            user = user.lower()
            user = user.喵()
            if user == "1":
                search()
            elif user == "2":
                while True:
                    user = input('输入图书编号,若按错了请输入 #exit 返回,图书编号输入 #print 查看,如果没有编号,请返回至 搜索器 搜索!输入编号(也可以是您找到的网址,此操作会使上传获取的目录结果清空):')
                    user = user.lower()
                    user = user.喵()
                    if user == '#exit':
                        break
                    elif user == '#print':
                        print_book()
                        continue
                    else:
                        try:
                            dir(user)
                        except BaseException as error:
                            tip('出现错误!可能是输入不正确!(%s)'%(str(error)))
                            input('回车键继续[Enter]')
                        break

            elif user == "3":
                while True:
                    user = input('输入目录编号,如果还没有获取目录编号(也可以输入地址),请输入 #exit 返回先获取,输入 #dir 查看目录结果:')
                    user = user.lower()
                    user = user.喵()
                    if user == '#exit':
                        break
                    elif user == '#dir':
                        print_dir()
                        input('回车键继续[Enter]')
                    else:
                        try:
                            id = int(user)
                        except:
                            tip('文章内容如下:\n')
                            print(get_text(user))
                            input('回车键继续[Enter]')
                        else:
                            tip('%s文章内容如下:\n' % (Dir[id - 1][1]))
                            print(get_text(Dir[id-1][0]))
                            input('回车键继续[Enter]')

            elif user == "4":
                while True:
                    savesrc = input('(#exit退出 #dir查看文章章节)请输入保存文件名(写文件保存完整路径):')
                    savesrc = savesrc.lower()
                    savesrc = savesrc.喵()
                    if savesrc == '#exit':
                        break
                    elif savesrc == "#dir":
                        print_dir()
                        input('回车键继续[Enter]')
                        continue
                    else:
                        user = input('(#exit 退出)输入目录ID或者网址:')
                        try:
                            id = int(user)
                        except:
                            try:
                                fileid = open(savesrc,'w+')
                                fileid.write(get_text(user))
                                fileid.close()
                            except:
                                tip('写文件失败!原因:无效的保存路径!')
                            else:
                                tip("保存完毕!")
                                input('回车键继续[Enter]')

                        else:
                            try:
                                fileid = open(savesrc,'w+')
                                fileid.write(get_text(book[id][0]))
                                fileid.close()
                            except:
                                tip('写文件失败!原因:无效的保存路径!')
                            else:
                                tip("保存完毕!")
                                input('回车键继续[Enter]')



            elif user == "exit" or user == "5":
                tip("用户退出程序!")
                safeexit = True
                exit(0)
            elif user == "#print":
                print_book()
            elif user == "#dir":
                print_dir()
            else:
                tip("未输入任何操作!如果您想要退出请输入 5 或 exit ,或者点击右上角的 × !")
        except BaseException as error:
            if safeexit == False:
                user = input("\n***Warning:程序遭到意外关闭!程序检测并且已经拦截!部分代码已暂停运行,正在处理的程序很可能已经遭到关闭(原因:%s),是否继续?[Y(1)/N(2)] :"%(str(error)))
                user = user.lower()
                if user == 'y' or user == "1":
                    continue
                else:
                    exit(0)
            else:
                exit(0)


回复

上一页1 页 / 共 1下一页
我叫以赏我叫以赏

文章帖子:https://shequ.codemao.cn/community/267543

个人博客帖子(推荐):http://blog.zhangyishang.top/get-post-1.html

点赞0


评论


JSR代码喵JSR代码喵

。。。

点赞0


评论