漫画爬虫

本文介绍了如何使用爬虫技术抓取漫画网页的内容,清除无关信息,并将每一话的图片整合到单独的页面上,实现漫画阅读的便捷体验。

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

import requests
import flask
#############################################
def 打开漫画(漫画目录网址):
    目录页面=requests.get(漫画目录网址)
    目录页面.encoding="utf-8"
    目录=[]
    开始关键词='<div class="chapter-body clearfix">'
    a1=目录页面.text.find(开始关键词)+len(开始关键词)
    a=a1
    z=目录页面.text.find('</div>',a)
    print(目录页面.text)
    while a<z and a>=a1:
        b=目录页面.text.find('href="',a)+len('href="')
        c=目录页面.text.find('"',b)
        d=目录页面.text.find('<span>',c)+len('<span>')
        a=目录页面.text.find('<',d)
        print(目录页面.text[b:c],目录页面.text[d:a])
        目录.append([目录页面.text[b:c],目录页面.text[d:a]])
    return 目录
def 打开目录(目录链接):
    目录=[]
    目录页面=requests.get(目录链接)
    目录页面.encoding="utf8"
    开始关键词='按剧情'
    a=目录页面.text.find(开始关键词)+len(开始关键词)
    z=目录页面.text.find('</div',a)
    while a<z and a!=-1:
        b=目录页面.text.find('<li>',a)
        c=目录页面.text.find('href="',b)+len('href="')
        d=目录页面.text.find('"',c)
        e=目录页面.text.find('<',d)
        a=目录页面.text.find('</li>',e)
        #print(目录页面.text[c:d],目录页面.text[d+2:e])
        目录.append([目录页面.text[c:d],目录页面.text[d+2:e]])
    开始关键词='<div id="w1" class="">'
    a1=目录页面.text.find(开始关键词)+len(开始关键词)
    a=a1
    z=目录页面.text.find('</div>',a)
    while a<z and a>=a1:
        d=目录页面.text.find('title="',a)+len('title="')
        e=目录页面.text.find('"',d)
        f=目录页面.text.find('<img src="',e)+len('<img src="')
        a=目录页面.text.find('"',f)
        b=目录页面.text.find('href="',a)+len('href="')
        c=目录页面.text.find('"',b)
        #print(a,目录页面.text[b:c],目录页面.text[d:e],目录页面.text[f:a])
        目录.append([目录页面.text[b:c],目录页面.text[d:e],目录页面.text[f:a]])
    开始关键词='pagination'
    a1=目录页面.text.find(开始关键词)+len(开始关键词)
    a=a1
    z=目录页面.text.find('</div>',a)
    while a<z and a>=a1:
        b=目录页面.text.find('href="',a)+len('href="')
        c=目录页面.text.find('"',b)
        d=目录页面.text.find('>',c)+1
        a=目录页面.text.find('<',d)
        #print(目录页面.text[b:c],目录页面.text[d:a])
        目录.append([目录页面.text[b:c],目录页面.text[d:a]])
    return 目录
def 获取图片链接(page,目录):
    漫画网页=requests.get("https://www.36mh.com/"+目录[page][0])
    漫画网页.encoding="utf-8"
    b=漫画网页.text.find('chapterImages = [')+len('chapterImages = [')
    c=漫画网页.text.find("]",b+1)
    d=漫画网页.text.find('chapterPath = "')+len('chapterPath = "')
    e=漫画网页.text.find('"',d+1)
    图片路径="https://img001.yayxcc.com/"+ 漫画网页.text[d:e]
    漫画图片=漫画网页.text[b:c].split(',')
    图片链接=[]
    for x in range(len(漫画图片)):
        图片链接.append(图片路径+漫画图片[x][1:-1])
    return 图片链接
app=flask.Flask(__name__)
@app.route('/<manhua>')
def page(manhua):
    if(manhua==''):
        manhua='list'
    目录=打开目录('https://www.36mh.com/'+manhua)
    网页=""
    for x in range(len(目录)):
        if len(目录[x])==2:
            网页+=' <a href="{}">{}</a> '.format(目录[x][0][:-1],目录[x][1])
        elif len(目录[x])==3:
            网页+='<br><a href="{}"><img src="{}">{}</a>'.format(目录[x][0][目录[x][0].find('.com/')+4:-1],目录[x][2],目录[x][1])
        else:
            pass
    return 网页
@app.route('/')
def index():
    return page('list')
@app.route('/<manhua>/<name>')
def 漫画目录(manhua,name):
    if manhua=='manhua':
        mainpage=""
        完美目录=打开漫画('https://www.36mh.com/'+manhua+'/'+name)
        for x in range(len(完美目录)):
            pagelink=完美目录[x][0].split('/')
            pagelink[-1]=''
            mainpage+='<a href="{}" >{}</a> '.format('/'.join(pagelink)+str(x),完美目录[x][1])
        return mainpage
    else :
        return page(manhua+'/'+name)
@app.route('/<manhua>/<name>/<int:page>')
def 漫画观看页面(manhua,name,page):
    目录=打开漫画('https://www.36mh.com/'+manhua+'/'+name)
    网页=""
    图片链接=获取图片链接(int(page),目录)
    for x in range(len(图片链接)):
        网页+='<img src="{}" width=100%> <br>'.format(图片链接[x])
    if int(page)<=len(目录):
        网页+='<h1><a href="/{}">{}</a></h1>'.format(int(page)+1,目录[int(page)+1][1])
    return 网页
if __name__ =='__main__':
    app.run(host="0.0.0.0",port=5000,debug=True)

简而言之 把人家网页搬了一遍,去除了所有杂项,并把一话的图片设定载入到同一页面上去

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值