半次元收藏夹爬虫(残疾版,不喜勿喷)

观察了一天的半次元网站的动态请求,并没有什么实质进展(懵逼)
所以只能制作出一个半自动化的程序,至少可以加快获取图片的速度

半次元收藏夹爬虫(残疾版,不喜勿喷)_第1张图片
首先点击我的收藏,这样就可以收到包含收藏夹信息的返回(感觉描述有点怪怪的)

现在开始分析请求

半次元收藏夹爬虫(残疾版,不喜勿喷)_第2张图片
我用直线划掉的是每个账号的uid,这个没什么必要,需要注意的是since的值和_signature的值。尤其要注意的是_signature的值,因为我至今为发现每次请求间这个值变化的规律。
半次元收藏夹爬虫(残疾版,不喜勿喷)_第3张图片
看看我们需要的信息在哪里,并且规划怎么获取。这就是一个字典套着一个字典(禁止套娃,滑稽)

开始放码

import requests
from index_mode import img_index

def get_data(uid,since,ture):
	url = 'https://bcy.net/apiv3/user/favor?uid='+uid+'&ptype=collect&mid='+uid+'&since='+since+'&size=35&_signature='+ture
	head = {
	'referer': 'https://bcy.net/u/4054592435529779/like/collect',
	'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3741.400 QQBrowser/10.5.3863.400',
	'x-requested-with': 'XMLHttpRequest',
	}
	response = requests.get(url,headers = head)
	json = response.json()
	return json


def json_index(since,ture,end):
	json = get_data(since,ture)
	like_list = json['data']['list']
	number = 0
	for data in like_list:   #遍历list中的元素
		number += 1
		item_id = data['item_detail']['item_id']
		url = 'https://bcy.net/item/detail/'+str(item_id)+'?_source_page=profile'
		img_index(url)
		if number == end:   #由于不是每次都需要将整个收藏夹中的信息都获取下来,所以设置了数量
			break
		else:
			pass



def main():
	uid = ''         #账号uid
	since = ''        #since的值
	ture = ''         #_signatrue的值
	end =              #结束数量
	json_index(uid,since,ture,end)

if __name__ == '__main__':
	main()

我在这个python文件一开始引用了一个外部py文件index_mode(tips:不要纠结名字了,变量都要靠翻译)中的img_index()函数。
这个img_index()的编写我放在上一个制作的半次元cos图片爬虫中,请配合上一篇一起食用。

有点诡异的代码,半自动的爬虫也是很大的槽点,但是我已经努力了,我分析链接分析了老久,但没有任何收获。

重命名.py

import os

folder = input('请输入文件夹名:')
file_folder = os.getcwd()+'\\'+folder

n = 0
for file_name in os.listdir(file_folder):
	n += 1
	#下面我只设置到1000个文件的情况,超出可能会顺序错误,可以自行修改
	if n < 10:
		name = '00'+str(n)
	elif 9 < n < 100:
		name = '0'+str(n)
	elif 99 < n < 1000:
		name = str(n)
	else:
		name = str(n)
	place_number = 0
	place_number_list = []
	for t in file_name:
		if t == '.':
			place_number_list.append(place_number)
		place_number += 1
	Format = file_name[place_number_list[-1]:]
	save_name = name + Format
	oldname = file_folder+'\\'+file_name
	newname = file_folder+'\\'+save_name
	os.rename(oldname,newname)

如果发现有些图片下载下来不和自己的心意,删除后又担心文件名冲突,可以使用这个程序,这个文件要放在图片文件的上级文件夹中(如下图)

半次元收藏夹爬虫(残疾版,不喜勿喷)_第4张图片

吐槽(文章已结束以下可看可不看)

分析链接分析的真的很烦躁,然后写代码的时候就有点急匆匆的感觉,每次测试前,ctrl^s都要压好几遍,然后【s】键的键轴给压坏了,话说写代码好费键盘啊。问客服修理的价格标准是什么,一个键轴20元,快递自费,吐血。所以我决定亲自操刀自己修。然后淘宝卖一个键轴2元(15个一组),我究竟是给卖键轴的骗了还是被卖键盘的骗了呢?(懵懵的)

键盘坏了,我都不能快乐崩崩崩了,只能用手柄凑合下(笑)

时间 2020/3/5

你可能感兴趣的:(爬虫)