老规矩,多说无益,直接亮成品
一、背景分析
相信做过爬虫的各位都会发现各大网站为了缓解自家服务器压力,而将我们需要的保存在云盘中,仅以分享分享链接的方式来分享文件。其中云盘分享又以百度云盘最为常见。
虽然说百度网盘除了限速等方面不够良心外,对普通用户还是比较善良的。但是,对于拥有大量链接需要进行保存的用户则不够方便。因此,一个自动保存的工具便十分有存在的必要了。
二、可行性分析
经使用fidder等抓包工具分析百度云盘接口,可以发现:
1、百度云保存所需字段需要用户登录才能够请求获得
2、百度云盘用户登录信息保存在Cookie中BDUSS字段中
3、百度云盘用户保存指定链接有无提取码仅仅是所需字段能否直接请求到的区别
4、存在提取码的链接,需要的是进行多个请求,请求到正确的Cookie中的一个字段后,用户便能够请求到该分享保存所需的字段
三、流程设计
1、首次登陆
2、文件分析及保存
3、系统整体设计
四、一些建议
1、内容请求函数的建议
相信有时候大家都会因为爬虫网络请求过程中,由于访问过于频繁等原因,会出现对方服务器拒绝连接,而导致连接中断,程序报错停止等问题。这在爬虫过程中是致命的。
在这里给出一种解决方案,仅供参考
//伪代码如下
def youRequest(url,maxFailTime=5,method='GET',parmas...):
#进行监控
try:
#判断请求
if 'get' in method.lower():
#get请求
resp=requests.get()
elif 'post' .... #其他请求同理
except Exception: #你想要捕捉的错误
if maxFailTime < 0:
return None
else:
print('错误信息,请求失败') #打印提示信息
time.sleep(5) #暂停一会
return youRequest(url,maxFailTime=maxFailTime-1,params)
else:
#请求成功
return resp
注意:该方法需要检测请求得到的内容是否为空,但是这总比程序意外停止好吧。由于是批量保存,所以可以跳过。
2、结构的建议
可以单独创建一个登陆的类,然后文件保存类继承这个类。当然以后要实现其他功能时,可以继承这个登陆类。
五、最后
感谢大家的阅读,该过程较为简单,具体实现以及相关参数构造可以自己通过抓包分析,当然也可以通过阅读博主后续博客。
有需要的同学可以下载该工具
链接:https://blog.csdn.net/Mr_June/article/details/93487301
再次谢谢大家愿意花费宝贵时间阅读本文