1 # -*- coding:utf-8 -*-
2 import requests,re,os,json,time
3 HEADERS={"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko"}
4 #访问头
5
6 print(
7 '''
8 --------------------------------------
9
10 获取Pixiv图片
11
12 by:冷溪凌寒
13 V 1.0
14 --------------------------------------
15 '''
16 )
17
18 source_list=[]#原图网站列表
19 img_list=[]#原图地址列表
20
21 def search_user(s,l):
22 url="https://www.pixiv.net/ajax/user/"+s+"/profile/all?lang=zh"
23 HEADERS['Referer'] = url
24 #更改Referer,通过反爬虫机制
25 page = requests.get(url, headers=HEADERS).text
26 #获取作者主页json
27 json_user=json.loads(page).get('body').get('illusts')
28 for i in json_user.keys():
29 l.append(i)
30 #添加到投稿ID列表
31 print("一共找到了%s次投稿,加载中,请稍等..."%len(l))
32
33 def search_source(img):
34 num=1
35 for i in range(0,len(source_list)): #遍历所有投稿
36 url="https://www.pixiv.net/ajax/illust/"+source_list[i]+"/pages?lang=zh"
37 #进入投稿页面
38 HEADERS['Referer'] = url
39 #更改Referer,通过反爬虫机制
40 page = requests.get(url, headers=HEADERS).text
41 #获取投稿页json
42 json_illust=json.loads(page).get('body')
43 #获取json内的body列表
44 for j in json_illust:
45 temp=j['urls']
46 #获取body列表内的urls字典
47 temp=temp['regular']
48 #获取键为"regular"的值
49 img.append(temp)
50 #添加到图片ID列表
51 print("加载第%d张图片..."%num)
52 num=num+1
53 print("一共获取到了%s张图片。"%len(img))
54 #time.sleep(1)
55
56 def mkdir(s):#创建文件夹
57 isExists=os.path.exists(s)#判断是否创建了文件夹
58 if not isExists:
59 os.makedirs(s)#创建文件夹
60 print("创建文件夹'%s',将图片放入'%s'文件夹内。"%(s,s))
61 else:
62 print("已经有'%s'文件夹,将图片放入'%s'文件夹内。"%(s,s))
63
64 def download(s,img):
65 num = 1
66 print('------------------------------------------------------------------------------')
67 print('序号\t\t\t图片链接')
68 for i in range(0,len(img)):
69 a = requests.get(url=img[i],headers=HEADERS)
70 f = open(search+"/%s.png"%num, 'wb')#以二进制格式写入文件夹中
71 f.write(a.content)
72 f.close()
73 print("第%s张图片下载完毕;"%num)
74 print("%s.\t\t\t%s"%(num,img[i]))
75 num = num+1
76 print('------------------------------------------------------------------------------')
77 print("下载结束!")
78
79
80 search=input("请输入想要搜索的作者id:")
81 #输入作者ID
82 search_user(search,source_list)
83 search_source(img_list)
84 mkdir(search)
85 download(search,img_list)