Pixiv爬虫-golang版

浏览量3607

Pixiv爬虫-golang版

之前草草的学过几天golang,但是只是跟着视频学的,学的很不扎实,很多概念不是很清楚,所以买了一本《Go程序设计语言(Go语言圣经)》来从头学一遍基础,前前后后花了一个星期左右的时间看完了这本书,心痒难耐,准备写一个程序来练练手,然后我就想起了之前写的pixiv爬虫,之前用python和java各写过一版,python版的因为全局解释器锁的问题还出过一段时间问题,不过好在后来解决了。后来写了java版,性能较python版性能提升了很多(不是python不好用,是我对java的多线程运行已经通信机制更加熟悉),然后我就想用这个程序来练一下golang,毕竟,并发程序是golang的强项嘛。哦,可怜的P站🤪🤪🤪

golang版耗费的CPU以及内存资源很少,只有不到30m的内存,原因是直接把图片数据对接到了文件上,图片的数据没有经过内存,之前写的python和java版都没有注意这个问题,导致图片在写入文件之前在内存逗留,占用大量内存。

写golang版的初衷就是想让其他人也可以无障碍的使用这个爬虫程序,golang打成可执行文件(.exe),体积较小且不依赖jdk和python环境,正是很好的满足了我的这个需求,但是访问P站需要翻墙也是个问题,但我想起一个学长和我说过国内有人做了P站的代理,嘿嘿,正合我意🤪

P站代理的地址为 https://www.pixivic.com

代码目前已经开源 Github exe文件下载地址

使用方法很简单,直接打开exe文件输入你想爬取的图片ID就行了,程序基本不会自己停止,他会一直去爬取相关图片,所以到最后相关性可能就不是很强了,但是可以在界面敲回车来停止程序,输入回车后需等待已经提交的任务爬取结束,否则那些任务图片会出现下载一半的情况。

代码一共两百多行,在这里就不耗费版面展示了,可以去Github查看源码,注释我也写的比较清楚,还有就是我可能会不定期维护,放在博客里代码可能会不是最新版,下面来讲一下爬虫的URL分析吧。

经过抓包分析,得到下面的地址可以获得对应Id的图片的详情信息,可以获得图片地址,访问量,点赞数,高度宽度等信息,这为进行图片的过滤提供了条件

然后下面的这个是获取相关图片的接口(因为是个人做的网站,接口很好分析,比较重点的是多线程的程序怎么写)

还有最要注意的就是爬取图片的之后一定要在 header 里设置 referer 否则会返回403页面,直接爬取P站也是这种情况。

评论

添加一条评论