统计
  • 建站日期:2021-03-10
  • 文章总数:378 篇
  • 评论总数:355 条
  • 分类总数:9 个
  • 最后更新:4月25日
文章 学习分享

Python带彩色进度条的笔趣阁爬虫控制台_让控制台程序更有趣

创新博客
首页 学习分享 正文

在平时的控制台程序中,我们经常感到乏味和枯燥。但是,有一个库叫做rich可以改变这种情况。rich库可以为我们的控制台程序增添色彩,使其更加生动有趣。而且,这个程序还可以在手机上运行,只需直接运行代码即可。


Python带彩色进度条的笔趣阁爬虫控制台_让控制台程序更有趣
-创新博客-专注于资源分享的blog
-第1
张图片

下面是一个使用rich库的笔趣阁爬虫控制台的示例代码。如果你想替换小说,只需要修改Spider类中的url属性即可。此外,如果你想将开头的猴子捂脸表情改为月亮,只需将"monkey"改为"moon"即可。

import requests, re
from rich.progress import Progress
from rich.progress import BarColumn,Progress,SpinnerColumn,TaskProgressColumn,TimeElapsedColumn,TimeRemainingColumn,MofNCompleteColumn
class Spider:
    url = "http://www.ibiquge.cc/83110"
    baseurl = "http://www.ibiquge.cc"
    headers = {
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36'
    }
    def __init__(self) -> None:
        self.getcatalog()
        self.download()
    #获取章节目录
    def getcatalog(self):
        self.data = []
        rsp = requests.get(self.url, headers=self.headers)
        purl = '<dd><a href ="(.*?)">'
        ptitle = '<dd><a href =".*?>(.*?)<'
        for i, j in zip(re.findall(purl, rsp.text),re.findall(ptitle, rsp.text)):
            self.data.append([j, self.baseurl+i])
    #下载
    def download(self):
        with open('小说.txt', 'a') as f:
            #设置进度条参数
            with Progress(SpinnerColumn(spinner_name='monkey', speed=0.2),"{task.description}",BarColumn(),MofNCompleteColumn(),TaskProgressColumn(),
                      TimeElapsedColumn(),TimeRemainingColumn(),) as progress:
                track = progress.add_task(total=len(self.data), description='downloading')
                progress.update(track, advance=0)  # 初始化进度条
                for i in self.data:
                    f.write(i[0]+'n')
                    txt = self.parse(i[1])
                    f.writelines(txt)
                    progress.update(track, advance=1,description='downloading')
    #解析小说内容
    def parse(self, url):
        rsp = requests.get(url,headers=self.headers)
        content = rsp.text
        p = '>        ([sS]*?)<'
        txt = re.findall(p, rsp.text)
        return txt #txt is list
Spider()

版权说明
文章采用: 《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权。
版权声明:未标注转载均为本站原创,转载时请以链接形式注明文章出处。如有侵权、不妥之处,请联系站长删除。敬请谅解!

-- 展开阅读全文 --
分享一个支付宝sdkdemo在php8.2下报错解决办法
« 上一篇
提示词交易系统测试版演示发布
下一篇 »
为了防止灌水评论,登录后即可评论!

HI ! 请登录
注册会员,享受下载全站资源特权。

最新文章

热门文章


网站定制|App定制|小程序定制|AI导航系统|AI提示词系统,一站式为您服务! 联系定制