发一个小说搜索源码的。根据字数排序,提供给各位批判。
[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('暂停')
|