python 爬虫爬取某网站的漫画

声明

为了表示对网站的尊重,已将网站地址隐藏,下载的漫画之前我就看过了,所以也会删掉,绝不侵犯网站的利益。

前言

第一次写爬虫,断断续续写了两天吧,中间有两次都不想写了,主要是网站的url地址比较乱,换了好几种格式不说,还需要自己构造,不过后来还是写下来了,最大的感悟就是正则真有用,也是在这个实践中,学会了一点正则,看来还是应该多动手写写。不过由于中间两次想弃写,所以代码没有注释,再加上是间隔着写的,所以我自己也不想补注释了,毕竟程序都跑出来了,谁还补注释。不过也存在一些小问题,就是部分图片下载的时候是404,我后来看了看,主要是图片链接的问题,因为图片有jpg和png等格式,网站中途换了几次格式,所以只要在代码里补上候补格式就可以,一旦发现404,就切换地址下载。

思路

写个大体思路吧,文字和代码混排也挺费劲的,主要自己不想回头再看一遍代码了。大体有个思路,方便自己以后复习。
这个网站并没有给出图片的地址,但是它却给出了下一章节的url格式,就是第一章给出第二章图片的url格式,估计是为了让自己网站识别吧,所以代码就分了两部分,第一章单独一部分,其余的章节一部分。

流程

  • 构造每一章节网页的地址
    • Chapter 1
      • 获取该章节的图片地址,并构造出该章节所有图片的地址
      • 从该章节的网页地址中提取图片的名字,并通过图片地址下载图片至本地,然后以图片名字命名。
    • Chapter 2 - end
      • 从每一章节地址中获取下一章节的图片地址格式,构造出每一章节每一页的网页地址。
      • 构造出所有图片的地址格式
      • 从每一章节每一页的网页地址中提取每一张图片的名字
      • 通过图片地址下载图片至本地,然后以图片名字命名。

程序

# -*- coding:utf-8 -*-
import requests, re
from lxml import etree


class DBMDownload:
    def __init__(self):
        self.url_temp_1 = "https://***/..../"
        self.url_temp_3 = "#@page={}"
        self.headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) "
                          "Chrome/57.0.2987.98 Safari/537.36 LBBROWSER",
            "Referer": "https://----/.../....shtml"
            }
        self.img_url_1 = "https://****/../....0{}.jpg" 
    
    def get_url_list(self):
        # g_max_pic_count = self.g_max_pic_count()
        chapter_url_list = self.chapter_url_list()
        count = 1
        url_list = {}
        url_temp_2_last = "....shtml"
        g_max_pic_count = self.g_max_pic_count(self.url_temp_1 + "....shtml" + "#@page=1")
        for url_temp_2 in chapter_url_list:
            if url_temp_2 != url_temp_2_last:
                g_max_pic_count = self.g_max_pic_count(self.url_temp_1 + url_temp_2 + "#@page=1")
                url_temp_2_last = url_temp_2
                url_list[count] = [self.url_temp_1 + url_temp_2 + self.url_temp_3.format(i) for i in
                                   range(1, g_max_pic_count + 1)]
                count = count + 1
            else:
                url_list[count] = [self.url_temp_1 + url_temp_2 + self.url_temp_3.format(i) for i in range(1, g_max_pic_count+1)]
                count = count + 1
        return url_list

    # 提取chapter地址
    def chapter_url_list(self):
        url_chapter = requests.get(self.url_temp_1, headers=self.headers).content.decode("utf-8")
        url_chapter_html = etree.HTML(url_chapter)
        chapter_url_list = url_chapter_html.xpath("//div[@class='cartoon_online_border']/ul//a/@href")
        chapter_url_list = ''.join(chapter_url_list)
        chapter_url_list = chapter_url_list.split(r'/')
        # print(chapter_url_list)
        chapter_url_list = chapter_url_list[2::2]
        return chapter_url_list

    # 获取最大页数
    def g_max_pic_count(self, url):
        url_response = requests.get(url, headers=self.headers).content.decode()
        g_max_pic_count = int("".join(re.findall(r'.*g_max_pic_count = (.*);.*', url_response)))
        return g_max_pic_count

    def img_parse_url_1(self, url_list):
        img_url_1 = "https://***/.../.../0{}.jpg"
        pagelist_1 = []
        for i in range(0, 23):
            pagelist_temp = list(range(1, 24))
            pagelist_1.append("%02d" % pagelist_temp[i])
        # print(pagelist)
        img_url_1 = [img_url_1.format(i) for i in pagelist_1]
        N = len(url_list)
        NumChapter = list(range(1, N+1))
        # print(N, NumChapter)
        # print(url_list[1][1])
        next_chapter_pages = []
        g_max_pic_count = []
        for i in NumChapter:
            url = url_list[i][0]
            url_response = requests.get(url, headers=self.headers).content.decode()
            next_chapter_pages_temp = re.findall('.*next_chapter_pages = \'\[\"(.*?)\",.*', url_response)
            # next_chapter_pages = next_chapter_pages.append(next_chapter_pages_temp)
            next_chapter_pages_temp = "".join(next_chapter_pages_temp)
            next_chapter_pages_temp = next_chapter_pages_temp.split("\\")
            next_chapter_pages_temp = "https://.../" + "".join(next_chapter_pages_temp)
            next_chapter_pages.append(next_chapter_pages_temp)
            g_max_pic_count.append(self.g_max_pic_count(url))
        g_max_pic_count = g_max_pic_count[1:]
        del next_chapter_pages[-1]
        # print(next_chapter_pages)
        page_number = []
        subfinish = []
        Creat_next_chapter_pages = []
        n_char = []
        for next_chapter_pages_url in next_chapter_pages:
            page_number.append("".join(re.findall('[0-9]+.png|[0-9]+.jpg|[0-9]+.bmp', next_chapter_pages_url)))
        for page_number_temp in page_number:
            subfinish.append(re.sub('[0-9]+', '{}', page_number_temp))
        Num_nextChapter = list(range(0, N-1))
        for i in Num_nextChapter:
            Creat_next_chapter_pages.append(re.sub(page_number[i], subfinish[i], next_chapter_pages[i]))
            page_number[i] = list(page_number[i])
            del page_number[i][-4:]
            # print(page_number[i])
            n = len(page_number[i])
            n_char.append('%0' + str(n) + 'd')
            page_number[i] = int("".join(page_number[i]))
        print(Creat_next_chapter_pages)
        pagelist = {}
        for i in Num_nextChapter:
            temp = []
            for j in range(0, g_max_pic_count[i]):
                pagelist_2 = list(range(page_number[i], g_max_pic_count[i] + page_number[i]))
                temp.append(n_char[i] % pagelist_2[j])
            pagelist[i] = temp
        # print(pagelist)
        img_url = {}
        for i in Num_nextChapter:
            temp = Creat_next_chapter_pages[i]
            img_url[i] = [temp.format(j) for j in pagelist[i]]
        # print(img_url)
        return img_url_1, img_url, g_max_pic_count

    def download_img(self, img_url_1, img_url, url_list, g_max_pic_count):
        name = []
        for url in url_list[1]:
            # 构造文件名
            url_response = requests.get(url, headers=self.headers).content.decode()
            g_chapter_name = re.findall(r'.*g_chapter_name = "(.*)";.*', url_response)
            g_current_page = re.findall(r'.*=(.*)', url)
            name_temp = "".join(g_chapter_name) + "_" + "".join(g_current_page)
            name.append(name_temp)
        i = 0
        for img_url_temp in img_url_1:
            imgresponse = requests.get(img_url_temp, headers=self.headers).content
            # print("正在下载"+name[i]+"...\n")
            with open('Download/'+name[i]+'.jpg', "wb") as f:
                print("正在下载" + name[i] + "...\n")
                f.write(imgresponse)
                f.close()
            i += 1

        name_list = {}
        N = len(url_list)
        num_chapter = list(range(1, N+1))
        for i in num_chapter:
            name_temp = []
            for url in url_list[i]:
                url_response = requests.get(url, headers=self.headers).content.decode()
                g_chapter_name = re.findall(r'.*g_chapter_name = "(.*)";.*', url_response)
                g_current_page = re.findall(r'.*=(.*)', url)
                name_temp_temp = "".join(g_chapter_name) + "_" + "".join(g_current_page)
                name_temp.append(name_temp_temp)
            name_list[i] = name_temp
        print(name_list)
        # name_list = {1: ['第01话_1', '第01话_2', '第01话_3', '第01话_4', '第01话_5', '第01话_6', '第01话_7', '第01话_8', '第01话_9', '第01话_10', '第01话_11', '第01话_12', '第01话_13', '第01话_14', '第01话_15', '第01话_16', '第01话_17', '第01话_18', '第01话_19', '第01话_20', '第01话_21', '第01话_22', '第01话_23'], 2: ['第02话_1', '第02话_2', '第02话_3', '第02话_4', '第02话_5', '第02话_6', '第02话_7', '第02话_8', '第02话_9', '第02话_10', '第02话_11', '第02话_12', '第02话_13', '第02话_14', '第02话_15', '第02话_16', '第02话_17', '第02话_18', '第02话_19', '第02话_20', '第02话_21', '第02话_22', '第02话_23', '第02话_24'], 3: ['第03话_1', '第03话_2', '第03话_3', '第03话_4', '第03话_5', '第03话_6', '第03话_7', '第03话_8', '第03话_9', '第03话_10', '第03话_11', '第03话_12', '第03话_13', '第03话_14', '第03话_15', '第03话_16', '第03话_17', '第03话_18', '第03话_19', '第03话_20', '第03话_21', '第03话_22', '第03话_23'], 4: ['第04话_1', '第04话_2', '第04话_3', '第04话_4', '第04话_5', '第04话_6', '第04话_7', '第04话_8', '第04话_9', '第04话_10', '第04话_11', '第04话_12', '第04话_13', '第04话_14', '第04话_15', '第04话_16', '第04话_17', '第04话_18', '第04话_19', '第04话_20', '第04话_21', '第04话_22', '第04话_23', '第04话_24'], 5: ['第05话修_1', '第05话修_2', '第05话修_3', '第05话修_4', '第05话修_5', '第05话修_6', '第05话修_7', '第05话修_8', '第05话修_9', '第05话修_10', '第05话修_11', '第05话修_12', '第05话修_13', '第05话修_14', '第05话修_15', '第05话修_16', '第05话修_17', '第05话修_18', '第05话修_19', '第05话修_20', '第05话修_21', '第05话修_22', '第05话修_23', '第05话修_24', '第05话修_25'], 6: ['第06话_1', '第06话_2', '第06话_3', '第06话_4', '第06话_5', '第06话_6', '第06话_7', '第06话_8', '第06话_9', '第06话_10', '第06话_11', '第06话_12', '第06话_13', '第06话_14', '第06话_15', '第06话_16', '第06话_17', '第06话_18', '第06话_19', '第06话_20', '第06话_21', '第06话_22', '第06话_23', '第06话_24'], 7: ['第07话_1', '第07话_2', '第07话_3', '第07话_4', '第07话_5', '第07话_6', '第07话_7', '第07话_8', '第07话_9', '第07话_10', '第07话_11', '第07话_12', '第07话_13', '第07话_14', '第07话_15', '第07话_16', '第07话_17', '第07话_18', '第07话_19', '第07话_20', '第07话_21', '第07话_22', '第07话_23', '第07话_24'], 8: ['第08话_1', '第08话_2', '第08话_3', '第08话_4', '第08话_5', '第08话_6', '第08话_7', '第08话_8', '第08话_9', '第08话_10', '第08话_11', '第08话_12'], 9: ['第09话_1', '第09话_2', '第09话_3', '第09话_4', '第09话_5', '第09话_6', '第09话_7', '第09话_8', '第09话_9', '第09话_10', '第09话_11', '第09话_12', '第09话_13', '第09话_14', '第09话_15', '第09话_16', '第09话_17', '第09话_18', '第09话_19', '第09话_20', '第09话_21', '第09话_22', '第09话_23', '第09话_24', '第09话_25', '第09话_26', '第09话_27', '第09话_28', '第09话_29', '第09话_30', '第09话_31', '第09话_32', '第09话_33'], 10: ['第10话_1', '第10话_2', '第10话_3', '第10话_4', '第10话_5', '第10话_6', '第10话_7', '第10话_8', '第10话_9'], 11: ['第11话_1', '第11话_2', '第11话_3', '第11话_4', '第11话_5', '第11话_6', '第11话_7', '第11话_8', '第11话_9', '第11话_10', '第11话_11', '第11话_12', '第11话_13', '第11话_14', '第11话_15', '第11话_16', '第11话_17', '第11话_18', '第11话_19', '第11话_20', '第11话_21', '第11话_22', '第11话_23', '第11话_24'], 12: ['第12话修_1', '第12话修_2', '第12话修_3', '第12话修_4', '第12话修_5', '第12话修_6', '第12话修_7', '第12话修_8', '第12话修_9', '第12话修_10', '第12话修_11', '第12话修_12', '第12话修_13', '第12话修_14', '第12话修_15', '第12话修_16', '第12话修_17', '第12话修_18', '第12话修_19', '第12话修_20', '第12话修_21', '第12话修_22', '第12话修_23', '第12话修_24', '第12话修_25'], 13: ['第13话_1', '第13话_2', '第13话_3', '第13话_4', '第13话_5', '第13话_6', '第13话_7', '第13话_8', '第13话_9', '第13话_10', '第13话_11', '第13话_12', '第13话_13', '第13话_14', '第13话_15', '第13话_16', '第13话_17', '第13话_18', '第13话_19', '第13话_20', '第13话_21', '第13话_22', '第13话_23', '第13话_24'], 14: ['第14话_1', '第14话_2', '第14话_3', '第14话_4', '第14话_5', '第14话_6', '第14话_7', '第14话_8', '第14话_9', '第14话_10', '第14话_11', '第14话_12', '第14话_13', '第14话_14', '第14话_15', '第14话_16', '第14话_17', '第14话_18', '第14话_19', '第14话_20', '第14话_21', '第14话_22', '第14话_23', '第14话_24'], 15: ['第15话_1', '第15话_2', '第15话_3', '第15话_4', '第15话_5', '第15话_6', '第15话_7', '第15话_8', '第15话_9', '第15话_10', '第15话_11', '第15话_12', '第15话_13', '第15话_14', '第15话_15', '第15话_16', '第15话_17', '第15话_18'], 16: ['第15话下_1', '第15话下_2', '第15话下_3', '第15话下_4', '第15话下_5', '第15话下_6'], 17: ['第16话_1', '第16话_2', '第16话_3', '第16话_4', '第16话_5', '第16话_6', '第16话_7', '第16话_8', '第16话_9', '第16话_10', '第16话_11', '第16话_12', '第16话_13', '第16话_14', '第16话_15', '第16话_16', '第16话_17', '第16话_18', '第16话_19', '第16话_20'], 18: ['第17话_1', '第17话_2', '第17话_3', '第17话_4', '第17话_5', '第17话_6', '第17话_7', '第17话_8', '第17话_9', '第17话_10', '第17话_11', '第17话_12', '第17话_13', '第17话_14', '第17话_15', '第17话_16', '第17话_17', '第17话_18', '第17话_19', '第17话_20', '第17话_21', '第17话_22', '第17话_23'], 19: ['第18话_1', '第18话_2', '第18话_3', '第18话_4', '第18话_5', '第18话_6', '第18话_7', '第18话_8', '第18话_9', '第18话_10', '第18话_11', '第18话_12', '第18话_13', '第18话_14', '第18话_15', '第18话_16', '第18话_17', '第18话_18', '第18话_19', '第18话_20', '第18话_21', '第18话_22', '第18话_23'], 20: ['第19话_1', '第19话_2', '第19话_3', '第19话_4', '第19话_5', '第19话_6', '第19话_7', '第19话_8', '第19话_9', '第19话_10', '第19话_11', '第19话_12', '第19话_13', '第19话_14', '第19话_15', '第19话_16', '第19话_17', '第19话_18', '第19话_19', '第19话_20', '第19话_21', '第19话_22', '第19话_23', '第19话_24'], 21: ['第20话_1', '第20话_2', '第20话_3', '第20话_4', '第20话_5', '第20话_6', '第20话_7', '第20话_8', '第20话_9', '第20话_10', '第20话_11', '第20话_12', '第20话_13', '第20话_14', '第20话_15', '第20话_16', '第20话_17', '第20话_18', '第20话_19', '第20话_20', '第20话_21', '第20话_22', '第20话_23', '第20话_24', '第20话_25'], 22: ['第21话_1', '第21话_2', '第21话_3', '第21话_4', '第21话_5', '第21话_6', '第21话_7', '第21话_8', '第21话_9', '第21话_10', '第21话_11', '第21话_12', '第21话_13', '第21话_14', '第21话_15', '第21话_16', '第21话_17', '第21话_18', '第21话_19', '第21话_20', '第21话_21', '第21话_22', '第21话_23', '第21话_24', '第21话_25'], 23: ['第22话_1', '第22话_2', '第22话_3', '第22话_4', '第22话_5', '第22话_6', '第22话_7', '第22话_8', '第22话_9', '第22话_10', '第22话_11', '第22话_12', '第22话_13', '第22话_14', '第22话_15', '第22话_16', '第22话_17', '第22话_18', '第22话_19', '第22话_20', '第22话_21', '第22话_22', '第22话_23', '第22话_24'], 24: ['第23话_1', '第23话_2', '第23话_3', '第23话_4', '第23话_5', '第23话_6', '第23话_7', '第23话_8', '第23话_9', '第23话_10', '第23话_11', '第23话_12', '第23话_13', '第23话_14', '第23话_15', '第23话_16', '第23话_17', '第23话_18', '第23话_19', '第23话_20', '第23话_21', '第23话_22', '第23话_23', '第23话_24', '第23话_25', '第23话_26'], 25: ['第24话_1', '第24话_2', '第24话_3', '第24话_4', '第24话_5', '第24话_6', '第24话_7', '第24话_8', '第24话_9', '第24话_10', '第24话_11', '第24话_12', '第24话_13', '第24话_14', '第24话_15', '第24话_16', '第24话_17', '第24话_18', '第24话_19', '第24话_20', '第24话_21', '第24话_22', '第24话_23', '第24话_24', '第24话_25', '第24话_26'], 26: ['第25话_1', '第25话_2', '第25话_3', '第25话_4', '第25话_5', '第25话_6', '第25话_7', '第25话_8', '第25话_9'], 27: ['第26话_1', '第26话_2', '第26话_3', '第26话_4', '第26话_5', '第26话_6', '第26话_7', '第26话_8', '第26话_9', '第26话_10', '第26话_11', '第26话_12', '第26话_13', '第26话_14', '第26话_15', '第26话_16', '第26话_17', '第26话_18', '第26话_19', '第26话_20', '第26话_21', '第26话_22', '第26话_23', '第26话_24'], 28: ['第27话_1', '第27话_2', '第27话_3', '第27话_4', '第27话_5', '第27话_6', '第27话_7', '第27话_8', '第27话_9', '第27话_10', '第27话_11', '第27话_12', '第27话_13', '第27话_14', '第27话_15', '第27话_16', '第27话_17', '第27话_18', '第27话_19', '第27话_20', '第27话_21', '第27话_22', '第27话_23', '第27话_24'], 29: ['第28话_1', '第28话_2', '第28话_3', '第28话_4', '第28话_5', '第28话_6', '第28话_7', '第28话_8', '第28话_9', '第28话_10', '第28话_11', '第28话_12', '第28话_13', '第28话_14', '第28话_15', '第28话_16', '第28话_17', '第28话_18', '第28话_19', '第28话_20', '第28话_21', '第28话_22', '第28话_23', '第28话_24'], 30: ['第29话_1', '第29话_2', '第29话_3', '第29话_4', '第29话_5', '第29话_6', '第29话_7', '第29话_8', '第29话_9', '第29话_10', '第29话_11', '第29话_12', '第29话_13', '第29话_14', '第29话_15', '第29话_16', '第29话_17', '第29话_18', '第29话_19', '第29话_20', '第29话_21', '第29话_22', '第29话_23', '第29话_24', '第29话_25'], 31: ['第30话_1', '第30话_2', '第30话_3', '第30话_4', '第30话_5', '第30话_6', '第30话_7', '第30话_8', '第30话_9', '第30话_10', '第30话_11', '第30话_12', '第30话_13', '第30话_14', '第30话_15', '第30话_16', '第30话_17', '第30话_18', '第30话_19', '第30话_20', '第30话_21', '第30话_22', '第30话_23', '第30话_24'], 32: ['第31话_1', '第31话_2', '第31话_3', '第31话_4', '第31话_5', '第31话_6', '第31话_7', '第31话_8', '第31话_9', '第31话_10', '第31话_11', '第31话_12', '第31话_13', '第31话_14', '第31话_15', '第31话_16', '第31话_17', '第31话_18', '第31话_19', '第31话_20', '第31话_21', '第31话_22'], 33: ['第32话_1', '第32话_2', '第32话_3', '第32话_4', '第32话_5', '第32话_6', '第32话_7', '第32话_8', '第32话_9', '第32话_10', '第32话_11', '第32话_12', '第32话_13', '第32话_14', '第32话_15', '第32话_16', '第32话_17', '第32话_18'], 34: ['第33话_1', '第33话_2', '第33话_3', '第33话_4', '第33话_5', '第33话_6', '第33话_7', '第33话_8', '第33话_9', '第33话_10', '第33话_11'], 35: ['第34话_1', '第34话_2', '第34话_3', '第34话_4', '第34话_5', '第34话_6', '第34话_7', '第34话_8', '第34话_9', '第34话_10', '第34话_11', '第34话_12', '第34话_13', '第34话_14'], 36: ['第35话_1', '第35话_2', '第35话_3', '第35话_4', '第35话_5', '第35话_6', '第35话_7', '第35话_8', '第35话_9', '第35话_10', '第35话_11', '第35话_12', '第35话_13', '第35话_14', '第35话_15', '第35话_16', '第35话_17', '第35话_18', '第35话_19', '第35话_20', '第35话_21', '第35话_22', '第35话_23', '第35话_24', '第35话_25', '第35话_26', '第35话_27'], 37: ['第36话_1', '第36话_2', '第36话_3', '第36话_4', '第36话_5', '第36话_6', '第36话_7', '第36话_8', '第36话_9', '第36话_10', '第36话_11', '第36话_12', '第36话_13', '第36话_14', '第36话_15', '第36话_16', '第36话_17', '第36话_18', '第36话_19', '第36话_20', '第36话_21'], 38: ['第37话_1', '第37话_2', '第37话_3', '第37话_4', '第37话_5', '第37话_6', '第37话_7', '第37话_8', '第37话_9', '第37话_10', '第37话_11', '第37话_12', '第37话_13', '第37话_14', '第37话_15', '第37话_16', '第37话_17', '第37话_18', '第37话_19', '第37话_20', '第37话_21', '第37话_22', '第37话_23', '第37话_24'], 39: ['第38话_1', '第38话_2', '第38话_3', '第38话_4', '第38话_5', '第38话_6', '第38话_7', '第38话_8', '第38话_9'], 40: ['第39话_1', '第39话_2', '第39话_3', '第39话_4', '第39话_5', '第39话_6', '第39话_7', '第39话_8', '第39话_9', '第39话_10', '第39话_11', '第39话_12', '第39话_13', '第39话_14', '第39话_15', '第39话_16', '第39话_17', '第39话_18', '第39话_19', '第39话_20', '第39话_21', '第39话_22', '第39话_23', '第39话_24', '第39话_25'], 41: ['第40话_1', '第40话_2', '第40话_3', '第40话_4', '第40话_5', '第40话_6', '第40话_7', '第40话_8', '第40话_9', '第40话_10', '第40话_11', '第40话_12', '第40话_13', '第40话_14', '第40话_15', '第40话_16', '第40话_17', '第40话_18', '第40话_19', '第40话_20', '第40话_21', '第40话_22', '第40话_23', '第40话_24'], 42: ['第41话修_1', '第41话修_2', '第41话修_3', '第41话修_4', '第41话修_5', '第41话修_6', '第41话修_7', '第41话修_8', '第41话修_9', '第41话修_10', '第41话修_11', '第41话修_12', '第41话修_13', '第41话修_14', '第41话修_15', '第41话修_16', '第41话修_17', '第41话修_18', '第41话修_19', '第41话修_20', '第41话修_21', '第41话修_22', '第41话修_23', '第41话修_24', '第41话修_25', '第41话修_26', '第41话修_27'], 43: ['第42话修_1', '第42话修_2', '第42话修_3', '第42话修_4', '第42话修_5', '第42话修_6', '第42话修_7', '第42话修_8', '第42话修_9', '第42话修_10', '第42话修_11', '第42话修_12', '第42话修_13', '第42话修_14', '第42话修_15', '第42话修_16', '第42话修_17', '第42话修_18', '第42话修_19', '第42话修_20', '第42话修_21', '第42话修_22', '第42话修_23', '第42话修_24', '第42话修_25'], 44: ['第43话修_1', '第43话修_2', '第43话修_3', '第43话修_4', '第43话修_5', '第43话修_6', '第43话修_7', '第43话修_8', '第43话修_9', '第43话修_10', '第43话修_11', '第43话修_12', '第43话修_13', '第43话修_14', '第43话修_15', '第43话修_16', '第43话修_17', '第43话修_18', '第43话修_19', '第43话修_20'], 45: ['第44话修_1', '第44话修_2', '第44话修_3', '第44话修_4', '第44话修_5', '第44话修_6', '第44话修_7', '第44话修_8', '第44话修_9', '第44话修_10', '第44话修_11', '第44话修_12', '第44话修_13', '第44话修_14', '第44话修_15', '第44话修_16', '第44话修_17', '第44话修_18', '第44话修_19', '第44话修_20', '第44话修_21', '第44话修_22', '第44话修_23', '第44话修_24', '第44话修_25'], 46: ['第45话_1', '第45话_2', '第45话_3', '第45话_4', '第45话_5', '第45话_6', '第45话_7', '第45话_8', '第45话_9', '第45话_10', '第45话_11', '第45话_12', '第45话_13', '第45话_14', '第45话_15', '第45话_16', '第45话_17', '第45话_18', '第45话_19', '第45话_20', '第45话_21', '第45话_22', '第45话_23', '第45话_24'], 47: ['第46话_1', '第46话_2', '第46话_3', '第46话_4', '第46话_5', '第46话_6', '第46话_7', '第46话_8', '第46话_9', '第46话_10', '第46话_11', '第46话_12', '第46话_13', '第46话_14', '第46话_15', '第46话_16', '第46话_17', '第46话_18', '第46话_19', '第46话_20', '第46话_21', '第46话_22', '第46话_23', '第46话_24', '第46话_25'], 48: ['第47话_1', '第47话_2', '第47话_3', '第47话_4', '第47话_5', '第47话_6', '第47话_7', '第47话_8', '第47话_9', '第47话_10', '第47话_11', '第47话_12', '第47话_13', '第47话_14', '第47话_15', '第47话_16', '第47话_17', '第47话_18', '第47话_19', '第47话_20', '第47话_21'], 49: ['第48话_1', '第48话_2', '第48话_3', '第48话_4', '第48话_5', '第48话_6', '第48话_7', '第48话_8', '第48话_9', '第48话_10', '第48话_11', '第48话_12', '第48话_13', '第48话_14', '第48话_15', '第48话_16', '第48话_17', '第48话_18', '第48话_19', '第48话_20', '第48话_21', '第48话_22', '第48话_23', '第48话_24', '第48话_25', '第48话_26'], 50: ['第49话_1', '第49话_2', '第49话_3', '第49话_4', '第49话_5', '第49话_6', '第49话_7', '第49话_8', '第49话_9', '第49话_10', '第49话_11', '第49话_12', '第49话_13', '第49话_14', '第49话_15', '第49话_16', '第49话_17', '第49话_18', '第49话_19', '第49话_20', '第49话_21', '第49话_22', '第49话_23', '第49话_24', '第49话_25'], 51: ['第50话_1', '第50话_2', '第50话_3', '第50话_4', '第50话_5', '第50话_6', '第50话_7', '第50话_8', '第50话_9', '第50话_10', '第50话_11', '第50话_12', '第50话_13', '第50话_14', '第50话_15', '第50话_16', '第50话_17', '第50话_18', '第50话_19', '第50话_20'], 52: ['第51话_1', '第51话_2', '第51话_3', '第51话_4', '第51话_5', '第51话_6', '第51话_7', '第51话_8', '第51话_9', '第51话_10', '第51话_11', '第51话_12', '第51话_13', '第51话_14', '第51话_15', '第51话_16', '第51话_17', '第51话_18', '第51话_19', '第51话_20', '第51话_21', '第51话_22'], 53: ['第52话_1', '第52话_2', '第52话_3', '第52话_4', '第52话_5', '第52话_6', '第52话_7', '第52话_8', '第52话_9', '第52话_10', '第52话_11', '第52话_12', '第52话_13', '第52话_14', '第52话_15', '第52话_16', '第52话_17', '第52话_18', '第52话_19', '第52话_20', '第52话_21', '第52话_22', '第52话_23', '第52话_24', '第52话_25', '第52话_26'], 54: ['第53话_1', '第53话_2', '第53话_3', '第53话_4', '第53话_5', '第53话_6', '第53话_7', '第53话_8', '第53话_9', '第53话_10', '第53话_11', '第53话_12', '第53话_13', '第53话_14', '第53话_15', '第53话_16', '第53话_17', '第53话_18', '第53话_19', '第53话_20', '第53话_21', '第53话_22', '第53话_23', '第53话_24', '第53话_25', '第53话_26', '第53话_27'], 55: ['第54话_1', '第54话_2', '第54话_3', '第54话_4', '第54话_5', '第54话_6', '第54话_7', '第54话_8', '第54话_9', '第54话_10', '第54话_11', '第54话_12', '第54话_13', '第54话_14', '第54话_15', '第54话_16', '第54话_17', '第54话_18', '第54话_19', '第54话_20', '第54话_21'], 56: ['第55话_1', '第55话_2', '第55话_3', '第55话_4', '第55话_5', '第55话_6', '第55话_7', '第55话_8', '第55话_9', '第55话_10', '第55话_11', '第55话_12', '第55话_13', '第55话_14', '第55话_15', '第55话_16', '第55话_17', '第55话_18', '第55话_19', '第55话_20', '第55话_21', '第55话_22', '第55话_23', '第55话_24', '第55话_25'], 57: ['第56话_1', '第56话_2', '第56话_3', '第56话_4', '第56话_5', '第56话_6', '第56话_7', '第56话_8', '第56话_9', '第56话_10', '第56话_11', '第56话_12', '第56话_13', '第56话_14', '第56话_15', '第56话_16', '第56话_17', '第56话_18', '第56话_19', '第56话_20', '第56话_21', '第56话_22'], 58: ['第57话_1', '第57话_2', '第57话_3', '第57话_4', '第57话_5', '第57话_6', '第57话_7', '第57话_8', '第57话_9', '第57话_10', '第57话_11', '第57话_12', '第57话_13', '第57话_14', '第57话_15', '第57话_16', '第57话_17', '第57话_18', '第57话_19', '第57话_20', '第57话_21', '第57话_22', '第57话_23', '第57话_24', '第57话_25', '第57话_26', '第57话_27', '第57话_28'], 59: ['第58话_1', '第58话_2', '第58话_3', '第58话_4', '第58话_5', '第58话_6', '第58话_7', '第58话_8', '第58话_9', '第58话_10', '第58话_11', '第58话_12', '第58话_13', '第58话_14', '第58话_15', '第58话_16', '第58话_17', '第58话_18', '第58话_19', '第58话_20', '第58话_21', '第58话_22', '第58话_23', '第58话_24', '第58话_25', '第58话_26', '第58话_27'], 60: ['第59话_1', '第59话_2', '第59话_3', '第59话_4', '第59话_5', '第59话_6', '第59话_7', '第59话_8', '第59话_9', '第59话_10', '第59话_11', '第59话_12', '第59话_13', '第59话_14', '第59话_15', '第59话_16', '第59话_17', '第59话_18', '第59话_19', '第59话_20', '第59话_21', '第59话_22', '第59话_23', '第59话_24', '第59话_25'], 61: ['第60话_1', '第60话_2', '第60话_3', '第60话_4', '第60话_5', '第60话_6', '第60话_7', '第60话_8', '第60话_9', '第60话_10', '第60话_11', '第60话_12', '第60话_13', '第60话_14', '第60话_15', '第60话_16', '第60话_17', '第60话_18', '第60话_19', '第60话_20', '第60话_21', '第60话_22'], 62: ['第61话_1', '第61话_2', '第61话_3', '第61话_4', '第61话_5', '第61话_6', '第61话_7', '第61话_8', '第61话_9', '第61话_10', '第61话_11', '第61话_12', '第61话_13', '第61话_14', '第61话_15', '第61话_16', '第61话_17', '第61话_18', '第61话_19', '第61话_20', '第61话_21', '第61话_22', '第61话_23', '第61话_24', '第61话_25', '第61话_26', '第61话_27'], 63: ['第62话_1', '第62话_2', '第62话_3', '第62话_4', '第62话_5', '第62话_6', '第62话_7', '第62话_8', '第62话_9', '第62话_10', '第62话_11', '第62话_12', '第62话_13'], 64: ['第63话_1', '第63话_2', '第63话_3', '第63话_4', '第63话_5', '第63话_6', '第63话_7', '第63话_8', '第63话_9', '第63话_10', '第63话_11', '第63话_12', '第63话_13', '第63话_14', '第63话_15', '第63话_16', '第63话_17', '第63话_18', '第63话_19', '第63话_20', '第63话_21', '第63话_22', '第63话_23', '第63话_24', '第63话_25'], 65: ['第64话_1', '第64话_2', '第64话_3', '第64话_4', '第64话_5', '第64话_6', '第64话_7', '第64话_8', '第64话_9', '第64话_10', '第64话_11', '第64话_12', '第64话_13', '第64话_14', '第64话_15', '第64话_16', '第64话_17', '第64话_18', '第64话_19', '第64话_20', '第64话_21', '第64话_22', '第64话_23', '第64话_24', '第64话_25', '第64话_26', '第64话_27', '第64话_28', '第64话_29']}
        n = len(name_list)
        for i in list(range(2, n + 1)):
            for j in list(range(0, g_max_pic_count[i-2])):
                imgresponse = requests.get(img_url[i-2][j], headers=self.headers).content
                with open('Download/' + name_list[i][j] + '.jpg', "wb") as f:
                    print("正在下载" + name_list[i][j] + "...\n")
                    f.write(imgresponse)

    def run(self):
        url_list = self.get_url_list()
        # print(url_list)
        [img_url_1, img_url, g_max_pic_count] = self.img_parse_url_1(url_list)
        print(img_url, g_max_pic_count)
        self.download_img(img_url_1, img_url, url_list, g_max_pic_count)


if __name__ == "__main__":
    DBMDownload = DBMDownload()
    DBMDownload.run()

结果

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/l_changyun/article/details/84927584