1. 程式人生 > >python 爬蟲爬取某網站的漫畫

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()

結果

在這裡插入圖片描述