找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 文档 工具 设计
查看: 133|回复: 0

python 小说搜索

[复制链接]

2万

主题

1249

回帖

2万

积分

超级版主

教育辅助界扛把子

附加身份标识
精华
1
热心
7
听众
1
威望
48
贡献
14309
违规
0
书币
49983
注册时间
2020-4-8

论坛元老灌水之王

发表于 2022-6-24 08:06 | 显示全部楼层 |阅读模式
发一个小说搜索源码的。根据字数排序,提供给各位批判。


[Python] 纯文本查看 复制代码
import requests
from urllib import parse
from colorama import init
from lxml import etree
from prettytable import PrettyTable
import os
init(autoreset=True)
os.system("mode con cols=120 lines=1125")
 
class 笔趣阁小说下载器:
    def __init__(self, 待搜索的小说名=None):
        self.待搜索的小说名 = 待搜索的小说名
        self.模拟请求头 = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
                          "Chrome/98.0.4758.102 Safari/537.36 Edg/98.0.1108.62 "
        }
        self._搜索到的小说数据 = None
 
    def 请求数据自动解码并转换HTML解析数据(self, _请求链接=None):
        _响应数据 = requests.get(url=_请求链接, headers=self.模拟请求头)
        _数据编码 = requests.utils.get_encodings_from_content(_响应数据.text)[0]
        _解码数据 = _响应数据.content.decode(_数据编码)
        _实例化数据 = etree.HTML(_解码数据)
        return _实例化数据
 
    def 搜索小说(self, ):
 
        _转码待搜索的小说名 = parse.quote(self.待搜索的小说名, encoding='gbk')
        _搜索小说链接 = f'https://www.bbiquge.net/modules/article/search.php?' \
                  f'searchtype=articlename&searchkey={_转码待搜索的小说名}&page=1'
        _待解析的数据 = \
            self.请求数据自动解码并转换HTML解析数据(_请求链接=_搜索小说链接)
        _共计搜索到的页数 = str(_待解析的数据.xpath('//*[@class="pagelink"]/em/text()')[0]).split('/')[1]
        print(f'搜索到{_共计搜索到的页数}页')
        _零时搜索内容列表 = list()
        for _当前页 in range(1, int(_共计搜索到的页数) + 1):
            print('正在搜索第', _当前页, '页')
            _搜索小说链接 = f'https://www.bbiquge.net/modules/article/search.php?' \
                      f'searchtype=articlename&searchkey={_转码待搜索的小说名}&page={_当前页}'
            _待解析的数据 = \
                self.请求数据自动解码并转换HTML解析数据(_请求链接=_搜索小说链接)
            _当页搜索内容 = _待解析的数据.xpath('//tr//*/text()')[6:]
            for a in range(0, int(len(_当页搜索内容) / 6 - 1)):
                _零时列表 = list()
                for b in range(0, 6):
                    _零时列表.append(_当页搜索内容[b + a * 6])
                _零时列表[3] = int(str(_零时列表[3]).replace('K', '')) / 10
                _零时搜索内容列表.append(_零时列表[0:-1])
        _零时搜索内容列表.sort(key=lambda _零时搜索内容列表: _零时搜索内容列表[3], reverse=True)
        for a in range(len(_零时搜索内容列表)):
            _零时搜索内容列表[a].insert(0, a)
        self._搜索到的小说数据 = _零时搜索内容列表
 
    def 显示搜索到的内容(self):
        os.system('cls')
        _表格 = PrettyTable()
        _表格.field_names = ["编号", "小说名", "最新章节", "作者", "万字", "更新日期", ]
        _表格.align['小说名'] = 'l'
        _表格.align['最新章节'] = 'l'
        _表格.align['作者'] = 'l'
        _表格.align['最新章节'] = 'l'
        _表格.align['[color=#6a8759][backcolor=rgb(43, 43, 43)][font=宋体, monospace][size=9.8pt]万[/size][/font][/backcolor][/color]字'] = 'l'
        _表格.align['更新日期'] = 'l'
        _表格.add_rows(self._搜索到的小说数据)
        print(_表格.get_string(title=self.待搜索的小说名))
 
    def 运行(self):
        self.搜索小说()
        self.显示搜索到的内容()
 
 
笔趣阁小说下载器(待搜索的小说名='永生').运行()
input('暂停')

Great works are not done by strength, but by persistence! 历尽艰辛的飞升者,成了围剿孙悟空的十万天兵之一。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 需要先绑定手机号


免责声明:
本站所发布的第三方软件及资源(包括但不仅限于文字/图片/音频/视频等仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢某程序或某个资源,请支持正版软件及版权方利益,注册或购买,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To: admin@cdsy.xyz

QQ|Archiver|手机版|小黑屋|城东书院 ( 湘ICP备19021508号-1|湘公网安备 43102202000103号 )

GMT+8, 2024-11-21 20:50 , Processed in 0.039032 second(s), 27 queries .

Powered by Discuz! CDSY.XYZ

Copyright © 2019-2023, Tencent Cloud.

快速回复 返回顶部 返回列表