none.gif

adblock0

GF  2021-01-19 18:21
(104836183)

【南+论剑】悬赏1777sp,进来分享你的开车技巧/网站/工具

这个帖子的老哥悬赏了500sp,但总感觉受之有愧。(毕竟老哥本意应该是希望看批识人,而不是谷歌识图)

加上我本人也在南+分享了一点开车小技巧,比如如何找片的 【车神之路】 以及帮南+老哥找片的【极速飙车中】,还有去除网页广告的小技巧【分享我的个人上网环境搭建】,每一次评论里都有大神出没,寥寥数语,便让人有豁然开朗的感觉,这让我意识到一件事

南+老哥们卧虎藏龙,所言非虚。

所以,我想了想,把这500sp拿出来并再补上1277,凑到1777sp,来一场南+论剑

在这个帖子底下,分享你的技巧/网站/工具……等等你觉得南+老哥们可能感兴趣的东西。(不一定要与开车有关)

在末尾设定两个购买框,一个1777sp,一个0到5sp,1777的用来未来给悬赏,0-5sp的用来给其他老哥表示点赞。

设定购买框的代码如下:[sell=0][/sell],复制粘贴过去,然后修改数字,并][中间加上空格,就会变成购买框。

最后购买数最多的老哥可以获得1777sp(我给)(也欢迎各位大佬加码),愿意加码的老哥我会带上你的id整理到主楼。

下面是规则: 违反规则的同学将没有资格得到悬赏

1.不能是色图或者片或者里番之类的东西(已经有其他帖子了)

2.不能关键内容放到购买框内(防止恶意获取投票)
更新:由于一些老哥看完以后并不会再点击购买框导致投票结果参考性较低,现在允许放置适当内容在购买框内。

3.分享的东西时效性不能过短,例如当你分享某个网站时,最好是https://tellme.pw/btsow这样较为稳定的网址,而不是随时会变换的网址。

4.禁止分享机场、vpn等翻墙工具

5.禁止带邀请链接或者其他的可从分享中获利的行为

6.需要有一定的介绍和使用说明,不限长短,一句话能说清也可以

7.本帖回复数量超过100后,得票(也就是被购买次数)最高,且票数不少于200的人可以得到悬赏。
(这条是为了防止本帖发出去就沉了,参加的人太少,最后只有一个人看被购买一次就拿到悬赏这种悲惨情况发生)

截止日期最晚到本帖无法回复前,并视情况提前(比如说票数不再有大的变动或者大部分人认为可以结贴)



分享目录整理

由于南+的设置,无论如何都会显示一楼的内容,点击链接后需要手动往下拉

本子爬虫 https://snow-plus.net/read.php?tid-1072428-uid-726521.html

一个ghs网站 https://snow-plus.net/read.php?tid-1072428-uid-1089807.html

寻找里番的工具 https://snow-plus.net/read.php?tid-1072428-uid-984263.html

绅士漫画 https://snow-plus.net/read.php?tid-1072428-uid-1368619.html

sync链接 古集艳本汇总 https://snow-plus.net/read.php?tid-1072428-uid-1157180.html

欧美向手动驾车方法 https://snow-plus.net/read.php?tid-1072428-uid-1067015.html

网站汇总 https://snow-plus.net/read.php?tid-1072428-uid-737769.html

爬黄网小说的爬虫 https://snow-plus.net/read.php?tid-1072428-uid-696622.html

AV女優名 変換君(AV女优艺名/马甲查找) https://snow-plus.net/read.php?tid-1072428-uid-946229.html

查找91被删除的影片 https://snow-plus.net/read.php?tid-1072428-uid-1071637.html

FC2最新影片搜索下载 https://snow-plus.net/read.php?tid-1072428-uid-1245964.html

一个付费黄色网站 https://snow-plus.net/read.php?tid-1072428-uid-718408.html

726521.png

kujisanfun

B1F  2021-01-19 19:54
(cc)
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



先放代码
复制代码
  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:
  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.     geshi = 'jpg'    #默认图片格式
  56.     list_1 = ['\\','/',':','*','?','"','<','>','|']    #去除漫画名中的非法字符
  57.     for i in list_1:
  58.         if i in title:
  59.             title = title.replace(i,'')
  60.     print('开始下载:'+title)
  61.     path = make_file(r"D:\本子",title)
  62.     print(title+'用有'+page+'页')
  63.     srcs = []
  64.     for i in range(1,int(page)+1):
  65.         src = 'https://i0.nyacdn.com/galleries/'+num+'/'+str(i)+'.'+geshi    #图片src
  66.         srcs.append(src)
  67.     for _ in range(64):    #64个线程
  68.         consumer = threading.Thread(target=save_imgs,args=[srcs,path,])
  69.         consumer.start()
  70. if __name__ == '__main__':
  71.     main()

也没啥难的,主要用到多线程下载可能稍微复杂一点,不过那部分我也是抄的网上的案例
其余部分我都写了注释



方便新手使用封装了exe:链接: https://pan.baidu.com/s/1pByLAwX0nvay8x9MQN8sww
有反馈有的人只有C盘,在给一个下载到C盘的https://pan.baidu.com/s/1Abd0TMamRpnfvcDbz4VYTQ
此帖售价 2 SP币,已有 195 人购买
若发现会员采用欺骗的方法获取财富,请立刻举报,我们会对会员处以2-N倍的罚金,严重者封掉ID!




使用方法:
①双击打开下载单本漫画.exe,等下如下图所示的提示

②按照提示,去EroCool查找并输入您想要下载的漫画的url(形如https://zha.erocool.me/detail/1826422o344227.html)、
③等下下载完成,下载窗口会自动关闭,下载好的漫画在D盘里的本子文件夹下



注意事项:
①由于网络等其他问题,下载的漫画可能会不全,您可以根据对应文件夹名中的page=后面的页码数判断是否下载完整
②同样是由于网络等其他问题,如果下载时间过长(下载窗口无法自动关闭),建议您自己关掉窗口,重新下载
实际上重新下载不是一个好办法,因为这里的重新下载是不管之前有多少页是下载成功的,全部重新下载。相当于我先下,然后保存到本地,有重复的就跳过,相当于白下。
emm懒得针对这么几页想办法了,重下就重下吧

379楼更新
③希望您不要滥用本爬虫
④如有其他问题,请私信反馈,我不一定会特地来这个帖子看反馈




后记:
其实本来我也没打算把这玩意发出去,就我以前发的几个爬虫,实际上对这些东西感兴趣的人并不多。
以及,我写的注意事项3,担心会被滥用。嘛,每次只下一本应该还好吧,就看用的人多不多了,要是升级了反爬,大家一起完蛋
我也没这个资格说什么滥用,因为我额外写了自用的,根据tag和截止时间、根据作者、根据汉化组批量下载汉化本的爬虫
关于注意事项的前两条,这个服务器很有意思,部分漫画,同一本漫画既有jpg又有png,在下载图片的函数里关于状态码404里写了
网络的话,这张图,用电信网打不开,移动可以
还有部分图片能访问到,但是很慢,超时说不定可以重试访问到

726521.png

kujisanfun

B2F  2021-01-27 21:25
(cc)

回 294楼(老傻瓜) 的帖子

好家伙,我没想到这个问题,你可以试试
大概率是提示开始下载信息后,立马闪退

726521.png

kujisanfun

B3F  2021-01-28 00:07
(cc)

回 304楼(老傻瓜) 的帖子

原帖更新了,所有东西放一个盘不难受吗

726521.png

kujisanfun

B4F  2021-01-29 00:08
(cc)

回 346楼(南门) 的帖子

是某个tb飞机杯的赞助广告,我用的电信网,你用移动能打开

726521.png

kujisanfun

B5F  2021-01-29 00:34
(cc)
图片:
图片:
上面电信下面移动

726521.png

kujisanfun

B6F  2021-01-31 02:39
(cc)
更新一下吧,关于下载缺失的情况
特别注意,这不是对之前的爬虫的更新,而是另外一个全新的爬虫,请先使用第一个下载,再用这个补全



说明:
原楼层写太多了,新写一楼
想来想去还是补救一下,重新下载还是麻烦,况且每次下载完就要确认缺失情况,否则还得回头找链接,太麻烦
在漫画名后面添加id=和page=也是预留了补救措施



exe文件:
链接:https://pan.baidu.com/s/1YzrOuHzp582dEW2JSxdJcw 提取码:q994 复制这段内容后打开百度网盘手机App,操作更方便哦



先放代码
复制代码
  1. import os
  2. import shutil
  3. import requests
  4. import threading
  5. from faker import Faker
  6. faker = Faker(locale='zh_CN')
  7. glock = threading.Lock()    #加锁
  8. def save_img_noreferer(path,src):
  9.     headers = {
  10.         'User-Agent':faker.user_agent()
  11.         }
  12.     try:
  13.         response = requests.get(src,headers=headers)
  14.     except:
  15.         save_img_noreferer(path,src)
  16.     else:
  17.         if response.status_code == 200:    #状态码200,正常下载
  18.             with open(path,'wb') as f:
  19.                 f.write(response.content)
  20.                 print(path+'下载完成')
  21.         elif response.status_code == 522:    #状态码522,超时重新下载,直至200下载成功
  22.             save_img_noreferer(path,src)
  23.         elif response.status_code == 404:    #状态码404大概是格式后缀错误,改默认jpg为png
  24.             src = src.replace('jpg','png')
  25.             save_img_noreferer(path,src)
  26.         else:
  27.             print(src+',下载失败,网页状态码为:'+str(response.status_code))
  28.             with open('常用的/error.txt','a',encoding='utf8') as f:
  29.                 f.write(src+',下载失败,网页状态码为:'+str(response.status_code)+'\n')
  30. def save_imgs(k,v):    #多线程,配合save_img_noreferer()使用
  31.     while True:
  32.         glock.acquire()
  33.         if len(k) ==0:
  34.             glock.release()
  35.             break
  36.         else:
  37.             path = k.pop()
  38.             url = v.pop()
  39.             glock.release()
  40.             save_img_noreferer(path,url)
  41. def get_path_files(path):
  42.     ls_path_files = []
  43.     for i in os.walk(path):
  44.         ls_path_files.append(i[0])
  45.     del ls_path_files[0]
  46.     return ls_path_files
  47. def get_dict_path_url(ls_path_files):
  48.     path = []
  49.     url = []
  50.     for path_file in ls_path_files:
  51.         page_should = int(path_file.split('page=')[-1])    #完整页码数
  52.         page_actually = len(os.listdir(path_file))    #实际页码数
  53.         if page_should == page_actually:
  54.             pass
  55.         else:    #两者不相等说明缺失
  56.             num = path_file.split('id=')[-1].split('page=')[0]
  57.             ls_page_actually = []
  58.             for i in os.listdir(path_file):
  59.                 ls_page_actually.append(int(i.split('.')[0]))
  60.             for i in range(1,page_should+1):
  61.                 if i not in ls_page_actually:    #对于缺失的,添加其本地路径和图片地址
  62.                     img_name = str(i)+'.jpg'
  63.                     path.append(os.path.join(path_file,img_name))
  64.                     url.append('https://i0.nyacdn.com/galleries/'+num+'/'+img_name)
  65.     return dict(zip(path,url))    #返回本地路径:图片地址的字典
  66. def ctrl_x(path_old,path_new):
  67.     try:
  68.         shutil.move(path_old,path_new)
  69.     except:
  70.         with open('常用的/error.txt','w',encoding='utf8') as f:
  71.             f.write('剪切时发生出错\t'+path_old)
  72. def main():
  73.     path = input('请输入二级路径:')
  74.     ls_path_files = get_path_files(path)    #获取二级路径下各一级路径
  75.     dict_path_url = get_dict_path_url(ls_path_files)    #获取本地路径:图片地址的字典
  76.     if len(dict_path_url) == 0:
  77.         input('未发现有缺失,按任意键退出')
  78.     elif len(dict_path_url) <= 10:    #缺失小于等于10页,可能完全不能下载,用户选择
  79.         a = input('缺失'+str(len(dict_path_url))+',可能不能下载了,是否继续处理(y)')
  80.         if a == 'y':    #多线程下载
  81.             k = list(dict_path_url.keys())
  82.             v = list(dict_path_url.values())
  83.             for _ in range(64):
  84.                 consumer = threading.Thread(target=save_imgs,args=[k,v,])
  85.                 consumer.start()
  86.     else:    #缺失大于10页,以我检验4W+缺失的经历,应该不会超过10页,故自动补全
  87.         k = list(dict_path_url.keys())
  88.         v = list(dict_path_url.values())
  89.         for _ in range(64):
  90.             consumer = threading.Thread(target=save_imgs,args=[k,v,])
  91.             consumer.start()
  92. if __name__ == '__main__':
  93.     main()

用了os.walk(),老实说好用也不好用,反正我第一次用的时候过了很久才熟悉
其余看注释



使用说明:
①双击打开exe,等下如下图出现

②按照提示复制粘贴二级路径,(我对二级路径的定义是这样的:包含众多图片、文件夹名为漫画名的文件夹的路径叫一级路径。而包含大量一级路径文件夹的叫二级路径)(我不知道应该怎么叫,就这么解释,姑且贴个图,语文不好,见谅)(如果你下载了一本本漫画后没有做什么其他处理的话,那么这个二级路径应该是“D:\本子”)

记得回车开始
③有三种情况处理:
1)不缺失,会提示“未发现有缺失,按任意键退出”
2)缺失小于等于10页,会询问你要不要继续,当且仅当输入y继续,否则不做处理,处理完自动退出
3)如果大于10页,不做询问自动处理,处理完自动退出



注意:
①存在缺失完全不能下载的情况,我测试的时候是4W+不超过10页,所以阈值设的10
②程序自动退出是bug了还是,完成了,请再是一遍,理想情况下要么提示不缺失,要么提示缺失小于等于10
③如有问题请仔细阅读使用说明,仍不能解决请私信问题
④对于二级路径再次说明:二级路径是包含众多漫画的文件夹,漫画的文件夹下只能包含图片。否则可能会出现未知错误,对此问题不更新