鱼C论坛

 找回密码
 立即注册
查看: 11369|回复: 72

[作品展示] Python爬取斗破苍穹漫画,方法与原作者不同。

[复制链接]
发表于 2018-10-26 16:00:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 考拉熊 于 2018-10-26 18:24 编辑

今天早上看见帖子https://fishc.com.cn/thread-123457-1-1.html,用Python爬取斗破苍穹漫画。刚好我自己也练练手,
1 观看代码得知漫画网站,
2 分析网页发现,图片的URL很有规则
3 https://mhpic.jumanhua.com/comic/D%2F%E6%96%97%E7%A0%B4%E8%8B%8D%E7%A9%B9%E6%8B%86%E5%88%86%E7%89%88%2F689%E8%AF%9DV%2F1.jpg-mht.middle
【上面链接后面的2F689代表698话】【上面链接后面的2F1代表每一话的第几章图片】
4 接下来就简单了,用for循环可以获取到图片并保存,




但是有个问题,我们不知道每一话的标题
比如  第689话 战幻身(中)

好在所有的章节信息都在http://www.manhuatai.com/doupocangqiong/这个链接里面,用正则把他们都提取出来。

先看下图片

微信截图_20181026155638.png
微信截图_20181026155627.png
微信截图_20181026155616.png


源代码在下面



我已经全部下载保存百度云盘了,需要的下载:
https://pan.baidu.com/s/1hTMQHSqYObcn5HgvtNYVnA

提取码回复
游客,如果您要查看本帖隐藏内容请回复








游客,如果您要查看本帖隐藏内容请回复
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-10-26 16:24:36 | 显示全部楼层
没人看吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-26 16:27:36 | 显示全部楼层

我也是这样想的 但是遇到问题。链接的规则并不是这样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-26 16:29:21 | 显示全部楼层
暗夜之隐 发表于 2018-10-26 16:27
我也是这样想的 但是遇到问题。链接的规则并不是这样

什么规则?,,不知道你遇到的什么问题,可以贴图上来,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-26 16:30:54 | 显示全部楼层
暗夜之隐 发表于 2018-10-26 16:27
我也是这样想的 但是遇到问题。链接的规则并不是这样

微信截图_20181026162957.png
微信截图_20181026162948.png
我现在估计有10分钟就爬完了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-26 16:31:19 | 显示全部楼层

我遇到的第一个不能访问链接是这个 https://mhpic.jumanhua.com/comic ... jpg-mht.middle.webp

注意V%2F1.jpg   这个字母V 是没有的提取不到 这个是696话 你也可以看一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-26 16:32:11 | 显示全部楼层
考拉熊 发表于 2018-10-26 16:30
我现在估计有10分钟就爬完了

你是从第一章开始的。 我是从最新的访问的 难道696章节是特别情况
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-26 16:37:48 | 显示全部楼层
暗夜之隐 发表于 2018-10-26 16:32
你是从第一章开始的。 我是从最新的访问的 难道696章节是特别情况

我是从最后一张开始的,,,696确实出现问题了,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-26 16:40:59 | 显示全部楼层
考拉熊 发表于 2018-10-26 16:37
我是从最后一张开始的,,,696确实出现问题了,

我也觉得很奇怪,不过原作者是从JS找到的URL加密方法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-26 17:13:06 | 显示全部楼层
暗夜之隐 发表于 2018-10-26 16:40
我也觉得很奇怪,不过原作者是从JS找到的URL加密方法

那个我有js的加密算法等一些,我看了一下,有点不太懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-26 18:25:11 | 显示全部楼层
顶一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-26 20:35:13 | 显示全部楼层

我下载完啦。用了最笨的方法。 对其它链接没有通用性 也就是只能下载这本漫画 如果要下载其它的需要改

import urllib.request
from bs4 import BeautifulSoup as bs
import re
import os
from urllib import parse

from urllib.request import quote

import io

from PIL import Image


def urlopen(url):

    
    req = urllib.request.Request(url)

    req.add_header("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36")

    html = urllib.request.urlopen(req)

    html = html.read()

    return html

    #urlopen 打开链接 并加了heaaders


def url_list(url):

    html = urlopen(url)

    htm = html.decode('utf-8')

    htm = bs(htm,'lxml')

    cont = htm.div(class_="mhlistbody")

    cont = cont[0]

    cont = cont.find_all('a')

    urllist = []

    for i in cont:
        
        i = i.attrs
        i = i['href']
        i = 'http://www.manhuatai.com'+i
        
        urllist.append(i)



    return urllist


def content(url):
    
    os.mkdir('苍穹')
    os.chdir('苍穹')

    urllist = url_list(url)

    
    print('一共有:'+str(len(urllist))+'个链接')

    for i in urllist:

        
        html = urlopen(i)
        html = html.decode('utf-8')

        #这里是找到章节数
        nmu = re.findall(r'(pagename:"第)(\d*)(话)',html)

        if len(nmu) == 0:
            
            continue

        #这个是章节名字
        htm = bs(html,'lxml')
        h1 = htm.h1.string
        os.mkdir(h1)
        os.chdir(h1)
        
        #这个是获取图片链接的大写字母它是小说名字第一个字的拼音字母的大家
        capital = re.search(r'mhid:".',html)
        capital = capital.group()
        capital = capital[-1]
        capital = capital.capitalize()
     
        #这里是链接中间的文字
        name = re.search(r'(mhname:")(.*?)(")',html)
        name = name.group(2)
        name = name+'拆分版'
      
        nmu = nmu[0]
        nmu = nmu[1]
        nmu = nmu+'话'
        
        #这里是找到这个章节一共有几张图片
        page = re.search(r'(totalimg:)(\d*)(,)',html)
        page = int(page.group(2))
        cont_list = []

        list3 = [583]

        list2 = [625,676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696]
        ce = nmu[:-1]
        ce = int(ce)

        jie = ce in list2

        jie1 = ce in list3

        if jie == True:
                
            nmu = str(ce)+'话v'

        if jie1 == True:
            
            nmu = str(ce)+'话v1'



        for i in range(1,page+1):


            url = capital+'/'+name+'/'+nmu+'/'+str(i)+'.jpg-mht.middle.webp'

            url = 'https://mhpic.jumanhua.com/comic/'+parse.quote(url)


            
            cont_list.append(url)

        for i in cont_list:
 
            fi_name = h1+str(cont_list.index(i)+1)+'.jpg'
            print(fi_name) 
            cont = urlopen(i)
            img = Image.open(io.BytesIO(cont))
            img.save(fi_name,'JPEG')

        os.chdir(os.pardir)
                



url = "http://www.manhuatai.com/doupocangqiong/"

list1 = content(url)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-28 22:14:19 | 显示全部楼层
暗夜之隐 发表于 2018-10-26 20:35
我下载完啦。用了最笨的方法。 对其它链接没有通用性 也就是只能下载这本漫画 如果要下载其它的需要改

...

厉害,佩服,,说实在的,,我单个文件代码还没有写超过一百行呢,,惭愧
我有时间补一下这个代码,,网站在url中随机加了参数,就是不想让我们容易爬取吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-28 22:43:37 From FishC Mobile | 显示全部楼层
考拉熊 发表于 2018-10-28 22:14
厉害,佩服,,说实在的,,我单个文件代码还没有写超过一百行呢,,惭愧
我有时间补 ...

嗯 反爬虫  我这个方法太笨了   还是原创那位 直接从js里面找到破解方法。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-29 14:52:06 | 显示全部楼层
回复
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-10-29 23:36:11 From FishC Mobile | 显示全部楼层
吱吱
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-10-30 10:36:56 | 显示全部楼层
过来顶一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-30 10:41:31 | 显示全部楼层
过来顶一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-30 10:42:03 | 显示全部楼层
过来顶一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-30 10:42:34 | 显示全部楼层
过来顶一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-16 03:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表