726521.png

kujisanfun

GF  2021-02-18 10:57
(cc)

EroCool爬虫

网站挂了,此贴失效



原文:https://snow-plus.net/read.php?tid-1072428-uid-726521.html

前几天EroCool(和喵绅士用的同一个服务器)和javbus图片服务器炸了,详见:https://snow-plus.net/read.php?tid-1095503.html    https://snow-plus.net/read.php?tid-1095350.html
修复之后他换了服务器地址,对原爬虫进行了一定的修改,主要就是改了下服务器地址以及采用了相对路径,以后下载的漫画在和爬虫同一路径下的本子文件夹里
其他的没什么修改的,使用方法详见原文

重要说明,咋说呢,他似乎对旧本子的服务器地址优化很差,越旧的本子她的地址(形如i0.mspcdn8.xyz)mspcdn后的数字越大,0~3下载起来还行,越往后下载起来越费劲,这也是没办法的事情

打包好的exe文件
链接: https://pan.baidu.com/s/1_c7v6oUkoNZHsp4sbAI1QA
此帖售价 0 SP币,已有 112 人购买
若发现会员采用欺骗的方法获取财富,请立刻举报,我们会对会员处以2-N倍的罚金,严重者封掉ID!


代码部分
复制代码
  1. import os
  2. import requests
  3. import threading
  4. from faker import Faker
  5. faker = Faker(locale='zh_CN')
  6. from pyquery import PyQuery as pq
  7. '''下载单本漫画'''
  8. def get_doc(url):    #返回pyquery对象
  9.     headers = {'User-Agent':faker.user_agent()}    #用随机UA
  10.     response = requests.get(url,headers=headers)
  11.     html = response.text
  12.     doc = pq(html)
  13.     return doc
  14. def make_file(file_path,file_name):    #目标路径和文件夹名
  15.     if os.path.exists(os.path.join(file_path,file_name)):                    #判断是否存在目标文件夹
  16.         return os.path.join(file_path,file_name)
  17.     else:                                                      #没有就创建
  18.         os.makedirs(os.path.join(file_path,file_name))
  19.         return os.path.join(file_path,file_name)
  20. def save_img_noreferer(path,src):
  21.     headers = {'User-Agent':faker.user_agent()}
  22.     try:
  23.         response = requests.get(src,headers=headers)    #有的时候仍然会出现UA反爬虫,跳过
  24.     except:
  25.         pass
  26.     else:
  27.         if response.status_code == 200 or response.status_code == 206:
  28.             name = src.split('/')[-1]    #图片名称默认为存在服务器里的名称
  29.             path = os.path.join(path,name)
  30.             with open(path,'wb') as f:
  31.                 f.write(response.content)
  32.         elif response.status_code == 522:    #状态码522,重试
  33.             save_img_noreferer(path,src)
  34.         elif response.status_code == 404:    #状态码404,可能是src图片格式问题
  35.             save_img_noreferer(path,src.replace('jpg','png'))
  36.         else:    #为防止错误,跳过
  37.             pass
  38. glock = threading.Lock()
  39. def save_imgs(srcs,path):    #多线程,配合save_img_noreferer()使用
  40.     while True:
  41.         glock.acquire()
  42.         if len(srcs) ==0:
  43.             glock.release()
  44.             break
  45.         else:
  46.             src = srcs.pop()
  47.             glock.release()
  48.             save_img_noreferer(path,src)    #记得修改path
  49. def main():
  50.     url_main = input('请输入下载漫画的地址:')
  51.     num = url_main.split('/')[-1].split('o')[0]    #漫画代码
  52.     doc = get_doc(url_main)
  53.     page = doc('.ld_box > div:nth-child(2) > .ld_body').text().split(' ')[0]    #漫画页码
  54.     title = doc('#comicdetail > h1').text()+'id='+num+'page='+page    #漫画标题
  55.     src_format = doc('[align=center]>img')[0].items()[2][1].split('/')[2]    #服务器地址
  56.     print('当前漫画服务器地址为:'+src_format+',数字越大下载越慢,请耐心等待')
  57.     pic_format = 'jpg'    #默认图片格式
  58.     list_1 = ['\\','/',':','*','?','"','<','>','|']    #去除漫画名中的非法字符
  59.     for i in list_1:
  60.         if i in title:
  61.             title = title.replace(i,'')
  62.     print('开始下载:'+title)
  63.     path = make_file('./本子',title)
  64.     print(title+'用有'+page+'页')
  65.     srcs = []
  66.     for i in range(1,int(page)+1):
  67.         src = 'https://'+src_format+'/galleries/'+num+'/'+str(i)+'.'+pic_format    #图片src
  68.         srcs.append(src)
  69.     for _ in range(64):    #64个线程
  70.         consumer = threading.Thread(target=save_imgs,args=[srcs,path,])
  71.         consumer.start()
  72. if __name__ == '__main__':
  73.     main()

none.gif

Ganis

顶下

none.gif

CaqbMux

B2F  2021-02-18 19:31
(……)

大佬,请问一直卡在开头啥都不下怎么破,已经试了几个本子了

726521.png

kujisanfun

B3F  2021-02-19 08:50
(cc)

回 2楼(kuz) 的帖子

EroCool的,不是喵绅士

none.gif

CaqbMux

B4F  2021-02-19 10:52
(……)

回 3楼(Sayaori) 的帖子

好吧,谢谢大佬

none.gif

ZLL

用户被禁言,该主题自动屏蔽!

none.gif

suzumi

我也提供一个吧,喵绅士下载的
油猴的插件,直接下载,成功率一般吧。
https://github.com/Tsuk1ko/nhentai-helper
它有github版本
https://github.com/Tsuk1ko/nhentai-helper
或者搜nhentai-helper自己下载也可以。

none.gif

赤中

My一下

none.gif

玖加七

学到了

3b7aaaaa

B9F  2021-03-28 13:40
    

3.gif

瓦萊裡安

学习一下

多木知春


none.gif

岁月时代

大佬大佬