反方向的无奈 2022-02-14 17:09 采纳率: 80%
浏览 58
已结题

python 爬取图片存储到文件夹问题

问题遇到的现象和发生背景

我想抓取一部漫画,离线观看,
要求:
每一章节创建单独一个文件存放,文件夹按照第一章 第二章 第三章顺序存储
抓取的图片按照,网页上的顺序保存,为0 1 2 3

目前没有报错,图片顺序存储已经完成
但是目录只能按照,抓取到的章节id存储
试想在创建文件夹的时候定义个变量去计数,但是,创建完一个之后就不创建了

问题相关代码,请勿粘贴截图
  # 保存图片
  def save_img(self, url, name):
        opener = urllib.request.build_opener()
        opener.addheaders = [('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.82 Safari/537.36')]
        urllib.request.install_opener(opener)
        urllib.request.urlretrieve(url, name)

    # 这个函数创建文件夹
    def create_mkdir(self, filename_path):
        path = filename_path.strip()
        isExists = os.path.exists(filename_path)
        if not isExists:
            print('创建名字叫做', filename_path, '的文件夹')
            os.makedirs(path)
            print('创建成功!')
        else:
            print(path, '文件夹已经存在了,不再创建')

    def get_book_url(self):
        soup_book_list = self.get_soup(self.url)
        for new in soup_book_list.select('.view-win-list'):
            if len(new.select('a')) > 0:
                url_list = new.findAll('a')
                for j in url_list:
                    url = self.Hurl + j['href']
                    url_id = url.split('/')[-1]
                    book_url = 'https://www.*****.top/chapter/'+url_id
                    self.create_mkdir(self.filename_path + url_id)
                    soup_img = self.get_soup(book_url)
                    x = 0
                    for img_list in soup_img.select('.comicpage'):
                        img = img_list.findAll('img')
                        for i in img:
                            img_url = i['data-original']
                            print(img_url)
                            self.save_img(img_url, self.filename_path + url_id + '/%s.jpg' % x)
                            x += 1
                            # 输出下载第几张
                            print('正在下载第%d张' % x)
运行结果及报错内容

我的解答思路和尝试过的方法

目前没有报错,图片顺序存储已经完成
但是目录只能按照,抓取到的章节id存储
试想在创建文件夹的时候定义个变量去计数,但是,创建完一个之后就不创建了

我想要达到的结果

文件夹,抓取的图片按照顺序命名
文件夹命名为:第一章 第二章 第三章
图片命名为:0 1 2 3

问下个各位要怎么解决,文件夹顺序存储的问题

  • 写回答

3条回答 默认 最新

  • 莱宝是菜宝 2022-02-14 19:58
    关注

    你的文件夹是由self.create_mkdir(self.filename_path + url_id) 这行代码生成的,所以文件夹的名字是url_id。你只需要多定义一个变量作为文件夹名字就可以了,代码如下:

    def get_book_url(self):
            file_id = 1    # 定义新的变量
            soup_book_list = self.get_soup(self.url)
            for new in soup_book_list.select('.view-win-list'):
                if len(new.select('a')) > 0:
                    url_list = new.findAll('a')
                    for j in url_list:
                        url = self.Hurl + j['href']
                        url_id = url.split('/')[-1]
                        book_url = 'https://www.*****.top/chapter/'+url_id
                        self.create_mkdir(self.filename_path + "第{}章".format(file_id))   # 修改了这一行
                        file_id += 1 
                        soup_img = self.get_soup(book_url)
                        x = 0
                        for img_list in soup_img.select('.comicpage'):
                            img = img_list.findAll('img')
                            for i in img:
                                img_url = i['data-original']
                                print(img_url)
                                self.save_img(img_url, self.filename_path + url_id + '/%s.jpg' % x)
                                x += 1
                                # 输出下载第几张
                                print('正在下载第%d张' % x)
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 2月17日
  • 已采纳回答 2月16日
  • 创建了问题 2月14日

悬赏问题

  • ¥15 对于这个问题的代码运行
  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败