[Python]批量下载yande.re的图片

初学py…

尝试摸索写了这玩意..

批量收图~

yande1

 

yande2

批量下载下来的图有些少儿不宜或重口啥的,需要自己去筛选辣~

有时会卡住不动,应该是yande.re的限制吧…毕竟国人是很可啪的

插件问题把我的缩进吃了….新窗口显示就不会被吃了..(似乎只有chrome是这样?

import urllib.request
import time
import re
import os

url = 'https://yande.re/post?page='

def saveImg (imgUrl,saveDir):
	startTime = time.time()
	fileRe = re.compile(r'/yande.re (.*)')
	fileName = fileRe.findall(urllib.request.unquote(imgUrl))[0]
	outPutRe = re.compile(r'\d+')
	imgNum = outPutRe.findall(fileName)[0]
	print ('Image ID: [' + imgNum + '] Saving Please wait...')
	urllib.request.urlretrieve(imgUrl,  saveDir + '/' + fileName)
	print ('Image ID: [' + imgNum + '] has been saved,Processed in' , int(time.time() - startTime) , 'seconds.')


def getImgList(url):
	print ('Loading...Please wait..')
	page = urllib.request.urlopen(url).read()
	page = page.decode('UTF-8')
	img = re.compile ( r'<a class="directlink largeimg" href="(.+?)">')
	imgList = img.findall (page) 
	return imgList

saveDir=input('Please input saved dir:')

try:
	os.mkdir(saveDir)
except Exception:
	pass

startPage = int(input('Please input start page num:'))
endPage = int(input('Please input end page num:'))


for i in range(startPage, endPage + 1):
	print('########################### Processing page' , i ,'###########################')
	for imgurl in getImgList(url + str(i) ):
		try:
			saveImg(imgurl, saveDir)
			print()
		except Exception:
			pass
	
print ('###########################Download Completed###########################')

 

渣渣代码,不过使用python有益于养成良好手动增加缩进习惯(我不习惯写缩进,捂脸

Github : https://github.com/flylai/YandeImageDownload

对了,yande.re不要随便打开,尤其身边有别人的时候…..

 

 

[Python]批量下载yande.re的图片》有16个想法

  1. 调调

    其实yande有提供api的,主页点help有介绍,可以爬指定tag或者评级的图片。真要爬非常轻松,获取xml或者json列表,里面有原图url地址。不过服务器好像做了并发数量限制。以前爬过一大批Miku的图片,无奈图片实在太大,硬盘不够放。

    回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注