从Manga Reader爬取我喜欢的漫画

本文分享了一个用于从特定漫画网站爬取图片资源的Python脚本,该脚本可以批量下载指定范围内的漫画章节,并按章节组织保存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自去年十月份实习后,就没碰过博客了。今天偶然间翻到了一年前为了看一个韩国漫画而写的一个爬虫脚本。也许过一段时间,这个脚本就彻底消失了。为了不让它消失,就存到我的博客上吧。

下面直接上代码,技术用的不是很多,主要的技术已经在这篇博客讲解过了——爬取起点中文网作品信息

'''
    为了从https://www.mangareader.net这个漫画网站上
    爬取漫画图片,特意做此代码
'''
import os, re
import urllib.request
import time

# 接通网页,获取网页信息
def openUrl(url):
    req = urllib.request.Request(url)
    req.add_header(
        'User-Agent', 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.62 Safari/537.36')
    response = urllib.request.urlopen(req)
    html = response.read()
    
    return html

# 获取页数
def getPages(url):
    html = openUrl(url).decode('utf-8')
    
    find = r'</select> of (\d*?)</div>'
    reg = re.compile(find)
    
    pages = re.findall(reg, html)
    
    return pages[0]

# 获取图片地址
def getImgs(url):
    html = openUrl(url).decode('utf-8')
    
    find = r'src="(.*?).jpg"'
    reg = re.compile(find)
    
    img = re.findall(reg, html)[0]
    img += '.jpg'
    
    return img

# 下载图片并保存
def saveImgs(folder, imgAddrs):
    num = 0
    for img in imgAddrs:
        filename = '0'*(3-len(str(num)))+str(num)+'.jpg'
        num += 1
        print(img)
        with open(filename, 'wb') as f:
            img = openUrl(img)
            f.write(img)
        time.sleep(1)

def download(path, start, num):
    url = "https://www.mangareader.net/the-breaker/"
    
    for i in range(start, start+num):
        # 创建文件夹名
        foldername = path + '\第'+str(i+1)+'章'
        os.mkdir(foldername)
        os.chdir(foldername)
        # 每一话的图片地址列表
        eachUrl = url + str(i+1)
        imgAddrs = []
        pages = int(getPages(eachUrl))
        
        # 循环搜寻每一话的图片地址
        print('第%d章有%d话'%(i+1, pages))
        for p in range(pages):
            p += 1
            img = getImgs(eachUrl + '/' + str(p))
            imgAddrs.append(img)
            # 下载图
            saveImgs(foldername, imgAddrs)

if __name__ == '__main__':
    # 爬取第start+1话 到 end话
    start = input('请输入下载的第一话话: ')
    num = input('请输入要下载几话: ')
    start = int(start) - 1
    num = int(num)
    # 友情提示:路径需要绝对路径,否则只能创建第一个文件夹,剩余的文件夹可能创建失败
    download('D:\\文档堆\\图片\\漫画\\The Breaker\\英文', start, num)

这个代码没有加代理,爬多了你可能就被墙了!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值