欢迎光临UUpython
最大、最新、最全的Python代码收集站

带彩色进度条的笔趣阁爬虫

这段代码是一个简单的小说爬虫,使用requests库和re模块来爬取小说章节内容。它通过获取章节目录,逐一下载章节内容并保存到本地的”小说.txt”文件中。

主要步骤如下:

  1. 创建一个名为Spider的类,其中包含初始化方法__init__
  2. getcatalog方法用于获取小说的章节目录,它发送GET请求获取页面内容,然后使用正则表达式提取章节链接和标题,将这些数据存储在self.data列表中。
  3. parse方法用于解析小说章节内容,也是通过发送GET请求获取页面内容,然后使用正则表达式提取章节文本。
  4. download方法用于下载小说内容。它循环遍历self.data中的章节链接,依次调用parse方法解析并写入章节内容到文件中。同时,使用rich库中的Progress类来显示下载进度条。
  5. 在主程序中,创建一个Spider对象,从而触发爬虫的运行。

请注意,这段代码只是一个简单的示例,实际爬虫可能会面临更多的挑战和问题,例如反爬措施、异常处理等。在进行网络爬取时,也需要遵循网站的规则和法律法规。

如果要把开头的猴子捂脸表情改成月亮,就把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 = '>        ([\s\S]*?)<'
        txt = re.findall(p, rsp.text)
        return txt #txt is list
Spider()
赞(0) 打赏
未经允许不得转载:UUpython » 带彩色进度条的笔趣阁爬虫
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!