2021/2/17
特别提醒说明,前几天图片服务器挂了,网站虽然换了新的,但是测试效果非常差,这个爬虫暂时没用了,等啥时候稳定了,我再修改
2021/2/18
开了个新帖子,这帖子没啥人看了,本楼层的爬虫链接失效了请勿购买
新的在这https://snow-plus.net/read.php?tid-1101340.html
下载本子的爬虫
本来想自己开一帖的,干脆就在你这发吧
首先分享两个在线本子站
喵绅士:
https://zh.qqhentai.com/EroCool:
https://zha.erocool.me/这两个站用的图片服务器是同一个,看他们详细图片地址就知道了,我用的是EroCool
先放代码
复制代码- import os
import requests import threading from faker import Faker faker = Faker(locale='zh_CN') from pyquery import PyQuery as pq
'''下载单本漫画'''
def get_doc(url): #返回pyquery对象 headers = {'User-Agent':faker.user_agent()} #用随机UA response = requests.get(url,headers=headers) html = response.text doc = pq(html) return doc
def make_file(file_path,file_name): #目标路径和文件夹名 if os.path.exists(os.path.join(file_path,file_name)): #判断是否存在目标文件夹 return os.path.join(file_path,file_name) else: #没有就创建 os.makedirs(os.path.join(file_path,file_name)) return os.path.join(file_path,file_name)
def save_img_noreferer(path,src): headers = {'User-Agent':faker.user_agent()} try: response = requests.get(src,headers=headers) #有的时候仍然会出现UA反爬虫,跳过 except: pass else: if response.status_code == 200: name = src.split('/')[-1] #图片名称默认为存在服务器里的名称 path = os.path.join(path,name) with open(path,'wb') as f: f.write(response.content) elif response.status_code == 522: #状态码522,重试 save_img_noreferer(path,src) elif response.status_code == 404: #状态码404,可能是src图片格式问题 save_img_noreferer(path,src.replace('jpg','png')) else: #未防止错误,跳过 pass
glock = threading.Lock() def save_imgs(srcs,path): #多线程,配合save_img_noreferer()使用 while True: glock.acquire() if len(srcs) ==0: glock.release() break else: src = srcs.pop() glock.release() save_img_noreferer(path,src) #记得修改path
def main(): url_main = input('请输入下载漫画的地址:') num = url_main.split('/')[-1].split('o')[0] #漫画代码 doc = get_doc(url_main) page = doc('.ld_box > div:nth-child(2) > .ld_body').text().split(' ')[0] #漫画页码 title = doc('#comicdetail > h1').text()+'id='+num+'page='+page #漫画标题 geshi = 'jpg' #默认图片格式 list_1 = ['\\','/',':','*','?','"','<','>','|'] #去除漫画名中的非法字符 for i in list_1: if i in title: title = title.replace(i,'') print('开始下载:'+title) path = make_file(r"D:\本子",title) print(title+'用有'+page+'页') srcs = [] for i in range(1,int(page)+1): src = 'https://i0.nyacdn.com/galleries/'+num+'/'+str(i)+'.'+geshi #图片src srcs.append(src) for _ in range(64): #64个线程 consumer = threading.Thread(target=save_imgs,args=[srcs,path,]) consumer.start()
if __name__ == '__main__': main()
|
也没啥难的,主要用到多线程下载可能稍微复杂一点,不过那部分我也是抄的网上的案例
其余部分我都写了注释
方便新手使用封装了exe:链接:
https://pan.baidu.com/s/1pByLAwX0nvay8x9MQN8sww有反馈有的人只有C盘,在给一个下载到C盘的
https://pan.baidu.com/s/1Abd0TMamRpnfvcDbz4VYTQ此帖售价 2 SP币,已有 193 人购买
若发现会员采用欺骗的方法获取财富,请立刻举报,我们会对会员处以2-N倍的罚金,严重者封掉ID!
使用方法:
①双击打开下载单本漫画.exe,等下如下图所示的提示

②按照提示,去EroCool查找并输入您想要下载的漫画的url(形如
https://zha.erocool.me/detail/1826422o344227.html)、
③等下下载完成,下载窗口会自动关闭,下载好的漫画在D盘里的本子文件夹下
注意事项:
①由于网络等其他问题,下载的漫画可能会不全,您可以根据对应文件夹名中的page=后面的页码数判断是否下载完整
②同样是由于网络等其他问题,如果下载时间过长(下载窗口无法自动关闭),建议您自己关掉窗口,重新下载
实际上重新下载不是一个好办法,因为这里的重新下载是不管之前有多少页是下载成功的,全部重新下载。相当于我先下,然后保存到本地,有重复的就跳过,相当于白下。
emm懒得针对这么几页想办法了,重下就重下吧
379楼更新
③希望您不要滥用本爬虫
④如有其他问题,请私信反馈,我不一定会特地来这个帖子看反馈
后记:
其实本来我也没打算把这玩意发出去,就我以前发的几个爬虫,实际上对这些东西感兴趣的人并不多。
以及,我写的注意事项3,担心会被滥用。嘛,每次只下一本应该还好吧,就看用的人多不多了,要是升级了反爬,大家一起完蛋
我也没这个资格说什么滥用,因为我额外写了自用的,根据tag和截止时间、根据作者、根据汉化组批量下载汉化本的爬虫关于注意事项的前两条,这个服务器很有意思,部分漫画,同一本漫画既有jpg又有png,在下载图片的函数里关于状态码404里写了
网络的话,这张图

,用电信网打不开,移动可以
还有部分图片能访问到,但是很慢,超时说不定可以重试访问到