作为一名合格的furry,我不仅要吸娜娜奇,还要天天泡在fa吸大触们的furry作品,这其中难免遇到某个十分喜爱的作者,于是便想down空此作者的所有作品。 鉴于一张张的保存实在费时费力,写个爬虫来解决眼前的问题似乎再好不过了,所以便有了现在这个下载器。
根据作者名批量下载此作者的所有作品,包括画廊和手稿。可填写自定义高级参数,包括从第几页第几张开始,下载多少张。对于登陆后才能查看的内容,需要填写字符串cookie。下载的过程中会有详细的下载日志显示在文本框中。
Windows
c#
.net4.0
收集用户在界面中输入的信息> 初始化整体下载所需的变量> 开一个线程来执行下载函数> 判断当前需要下载哪个图集> 进入对应图集的下载函数并初始化相关变量> 下载并解析列表页面> 循环下载本页的所有图片> 循环下载所有页> 下载下一个图集> 执行结束函数。
这么个小玩意本以为不会花太久就能做成心仪的样子,然而事实是从开始到现在断断续续已经做了半年,经历好几个“大版本”修改,才算满意。
这里整理下曾经遇到的坑
并不是所有参数的初始化时机都是一样的,比如总下载量需要在整个下载的最开始初始化为零,这个时机在用户按下开始按钮之后,下载开始之前。
而另一个参数,单个图集的总下载量,这个参数是为了判定是否已经到达最大下载量。它就需要在另一个时机来归零,也就是放在图集下载函数的最开始,这样就可以在连续下载图集的时候,准确无误的初始化。
这个应该是爬虫里比较基本的操作了,不过我自己按照网上的步骤写出来的代码,经常登陆失败,不知道是cookie的问题还是代码的问题。后来索性直接用了网上比较成熟的整套代码,只用来做cookie登录真是大材小用了,不过起码不用为轮子的事操心。
然后…还是登陆失败,那就很明了了,cookie有问题,所以我便仔细研究cookie字符串的格式,发现其中有几个键值对的格式十分的奇妙,两个分号间有两个等号,导致程序分析失败,,
以后还是不用360浏览器了。
去掉捣乱的几个cookie之后就没什么问题了
开始是用的string类里面的各种函数,查询字符串,移位,替换,代码又长又难以理解,后来去学了正则表达式,三行搞定所有分析,强大到无话可说。
写这个软件之前我都不知道啥是爬虫,直到后来有人跟我说这就是。。
很高兴通过这个软件既满足了私欲【x】,又学到了一堆新知识,尤其是强大的正则【导致我去学了perl,不过半途而废了】。
代码已经发布到github,地址是这里