爬取风之动漫 亚人漫画全部

下面是源码

from urllib import request
import requests, re
import time
import random
import socket

def mkdir(path):
    # 引入模块
    import os

    # 去除首位空格
    path = path.strip()
    # 去除尾部 \ 符号
    path = path.rstrip("\\")

    # 判断路径是否存在
    # 存在     True
    # 不存在   False
    isExists = os.path.exists(path)

    # 判断结果
    if not isExists:
        # 如果不存在则创建目录
        # 创建目录操作函数
        os.makedirs(path)

        print(
            path + ' 创建成功')
        return True
    else:
        # 如果目录存在则不创建,并提示目录已存在
        print(
            path + ' 目录已存在')
        return False


bese_url = "https://manhua.fzdm.com/41/"

head = {

    "cookie": "picHost=p17.xiaoshidi.net; Hm_lvt_cb51090e9c10cda176f81a7fa92c3dfc=1545054252,1545054291,1545054381,1545054404; Hm_lpvt_cb51090e9c10cda176f81a7fa92c3dfc=1545054475",

    "user-agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"
}
r = requests.get(bese_url, headers=head)#打开网页
juan = r.text#查看网页源码
# print(juan)
juanm = re.findall('<a href="(.+?)"', juan)#卷名地址正则爬取迟来
# print(juanm)
juanm1 = juanm[13:-3]#去掉不要的卷名与内容不符的列表内元素
list.reverse(juanm1)#因为地址倒序,所以排一下
print(juanm1)
#juanm1 =juanm1[43:]
# print(len(juanm1))
print(juanm1)
zhangshu = 0
bese_ur2 = "https://manhua.fzdm.com/41/{}"#隐藏的漫画图片网址!!!!
for i in juanm1:
    print(i)
    zhangshu += 1
    zhangshu1 = "./亚人/{}".format(i)#存放的文件夹路径以及文件夹名字
    mkdir(zhangshu1)#调用函数,创建文件夹
    bese_url3 = bese_ur2.format(i)#漫画地址(每话的)

    # print(bese_url3)
    a = "index_{}.html"
    #遍历一话多少页
    for i in range(0, 1000):
        bese_url4 = bese_url3 + a.format(i)
        # print(bese_url4)
        nr = requests.get(bese_url4, headers=head, timeout=2)
        #打开每个图片的网页内容
        nr1 = nr.text
        # print(nr1)
        tupian = re.findall('var mhurl="(.*?)"', nr1)#正则爬取出每个图片的后面的地址
        print(tupian)
        tupian1 = ""
        for n in tupian:
            tupian1 += n
        print(tupian1)
        tupiandizhi = "http://p0.xiaoshidi.net/{}"
        tupiandizhi1 = tupiandizhi.format(tupian1)#组合图片地址
        print(tupiandizhi1)
        i = str(i)
        yeshu1 = '第{a}页{b}'.format(a=i,b=tupian1[-8:])
        yeshu2 = '{b}'.format(b=tupian1[-6:])
        print(yeshu1[-3:])#判断是什么格式格式图片
        if tupian1[-3:] == 'jpg':

            zhangshu2 = '{}'.format(i)
            try:
                request.urlretrieve(tupiandizhi1, zhangshu1  +yeshu1)#判断正确 写入
            except:
                print(tupian1+"没获取到")
        elif tupian1[-3:] == 'png':#判断是不是png格式图片
            zhangshu2 = '{}'.format(i)
            try:
                request.urlretrieve(tupiandizhi1, zhangshu1  +yeshu2)
            except:
                print(tupian1+"没获取到")
        else:#如果不是png|jpg格式,则跳出这话动漫
            print("最后一页")
            break
        #时间随机等待,表现的更像人类
        shuzi = [1, 2, 3, 4, 5]
        shuzishij = random.randint(0, 4)
        print(shuzishij)
        time.sleep(shuzi[shuzishij])
        # except:
        #     print("这个没获取到")

    time.sleep(60)

代码写的比较乱,看不懂的可以留言问哈。新手请多多指教。谢谢

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值