终于,我用爬虫批量保存了P站的靓图

作者:pk哥
来源:Python知识圈

阅读文本大概需要 5 分钟

今天我决定爬虫下 P站的图片,我们首先打开网站研究下。

不好意思,手抖打错了,应该是下面这个网站。

众所周知,插图网站 pixiv 别名叫 P站,所以今天我用爬虫批量保存二次元P站的靓图。

P站主要分为四个模块,插画、动图、漫画、小说,小说和漫画都是日文,看不懂,所以今天的目标就是插画和动图了。

图片链接规律分析

今天就以插画为例,进入插画模块,我们先找到怎么下载单张插画的图片的方法,我们打开 F12 进入 Network,发现这个页面会返回每个插画的 id。

点击单个插画进入到插画具体页面,看到网址就是上一个网页的 id 拼接而成的。

我们打开详情页的源代码,在 link 标签里有个 href 链接,我们点击进入。

进来之后我们发现里面都是关于这张插画图片的详情信息,包括插画标题、插画高度和宽度等,url 应该就是插画的可下载链接了。

我们点击 url 链接,果然,在新窗口中直接打开了图片,这就表示这就是我们要找的插画图片的下载链接了。

我们接下来看看这个可下载插画 url 链接的规律,我们在插画模块打开第二张插画,和刚才一样的步骤,查看它的可下载链接。

简单对比,我们就可以看出来,这两个链接除了id不一样,其他链接不变,而 id 就是插画列表页面返回的 id,这个就简单了。

单张图片爬虫下载

我们把 id 提取出来,我们先来下载一张图片,如果你一张图片用爬虫下载成功了,那你就成功了一半了,剩下的工作就是写个循环去批量下载就行。

我们在看下接口返回的 json 值,发现 illust_id 在 contents 下。

每次动态加载后返回 50 张图的 illust_id,我们现在只下载一张图,就直接返回第一张图的 illust_id 好了。

然后,我们需要写一个下载图片的方法,保存在指定的目录下,文件名用 illust_id,图片链接前面也分析过了,除了 illust_id,其他都是相同的,我们简单做下拼接就可以完成下载了。

这样第一张图片就成功的下载好了。

批量靓图下载

上面单张图片下载搞定了,接下来就是批量了。

第一个批量的地方是插画列表页面超过50张图,再下滑时,会产生接口返回新的数据,接口的请求除了页码 p 不同,其他都是一样。

下滑到最底部,Headers 下面请求的 p 最大值是 10,那我们把 p 值当成参数,在 1 到 10 里循环就好了。

第二个批量的地方是 illust_id 获取那里,刚才下载一张的时候我们直接写成 0,50个的话我们写个循环就好了。

上面图中 i 每次加 1 都会返回一个 illust_id,我们用一个把返回的 50 个 illust_id 全部添加到 illust_ids 的空列表中,下载时从 illust_ids 循环获取 illust_id 实现批量下载。

反爬措施

对于短时间批量下载,很容易被反爬,被封ip导致段时间内无法再继续爬取。

反爬措施主要有以下 3 种。

1.加等待时间

我们可以在批量请求接口之间加入随机等待时间,因为封 ip 一般都是根据在规定时间内你的请求达到了它规定的阈值,所以我们可以加个随机等待时间来控制下爬取的频率。

但是这个随机等待的时间也不好控制,等待时间太短的话可能效果也不明显,太长的话就会延长爬取的时间。

2.随机UA

User Agent 也是网站判断你的请求是不是正常的浏览器请求行为,如果你的爬虫里没有这个参数,那网站第一时间就认定了你是个爬虫,被封就是分分钟的事情了,如果你的 UA 一直不变的话,那多请求几次后,那就会被识别了,所以我们需要多弄几个 UA,每次请求的时候随机从这几个 UA 去获取。

3.代理ip池

最保险的就是自己建立一个代理 ip 池了,代理 ip 也有免费和付费的,免费的可用率不高,需要自己爬取下来后检查下再用,每次爬取随机选择一个可用的代理 ip,这样可以极大的降低被封 ip 的风险。这个下次再写篇文章专门讲讲怎么搭建自己的代理 ip 池。

好了,以上步骤基本上是爬虫的基本步骤了,除了本文的爬 P站图片,爬取其他网站的图片步骤基本也是这个思路了。

最后,这些图片用于自己欣赏和做壁纸没问题,用于视频封面和素材或者文章的封面需要注意下图片是否有版权。

代码中 headers 信息记得替换成自己的再运行代码。

这些信息也不用一个个手动输,之前文章讲过的 curl 转换神器(https://curl.trillworks.com/),可以一键生成这些参数。

本文源码:https://github.com/Brucepk/pixiv_download

(0)

相关推荐

  • 百度蜘蛛Baiduspider真假识别如何呢?

    之前百度站长平台接到某站长求助,表示误封禁了Baiduspider的IP,询问是否有办法获得Baiduspider的所有IP,打算放入白名单加以保护,防止再次误封.在此百度官方告诉各位站长,Baidu ...

  • 教你自己搭建一个ip池(绝对超好用!!!!)

    随着我们爬虫的速度越来越快,很多时候,有人发现,数据爬不了啦,打印出来一看. 不返回数据,而且还甩一句话 是不是很熟悉啊? 要想想看,人是怎么访问网站的? 发请求,对,那么就会带有 request.h ...

  • UA328

    UA328

  • 听说你好不容易写了个爬虫,结果没抓几个就被封了?

    近来知乎上如雨后春笋般冒出了大把大把的爬虫教程.这是好事,学了 Python 基础的同学们可以很轻松地搜出许多练手的例子.不过我不是针对谁,我是说网上绝大多数的爬虫教程,其实都缺乏可操作性. 是的,也 ...

  • Excel VBA 7.78Excel中的图片如何批量保存?轻松保存他人文件中的精美图片!

    Excel中的图片如何批量保存?轻松保存他人文件中的精美图片! 点击上方"Excel和VBA",选择"置顶公众号" 致力于原创分享Excel的相关知识,源码,源 ...

  • 京东商品主图、详情图、评论图、视频原来可以这样一键批量保存

    电商.微商都需要采集保存各种商品图片,但太多图片一张张手动保存似乎太繁琐,要怎么才能批量保存这么多的图片呢?今天小编给大家带来最新方法,一起看看吧. 先预览一组保存的商品图片效果: 评论语展示效果 开 ...

  • 如何批量保存图虫网社区作者的作品

    图虫网中有着大量高清精美的图片让人忍不住想保存下来当壁纸,特别是图虫社会的那些摄影师的图片,很多都是特别好看的原创图片.那么有没有批量保存图虫网某个作者作品的小工具呢?接下来就让小编来演示吧! 一.需 ...

  • 微信又更新!终于可以对好友批量管理了~

    最前不久新出现的 " 粤语 " 语音翻译功能. 不过这个功能仅限定位地区为"广东",像小兮这种百慕大的神秘人,粤语好像没什么难度. 趁着手机在旁边,赶紧切换下定 ...

  • 美拍里的多个视频可以批量保存到电脑上

    美拍视频里是有搞笑.美妆时尚.美食.音乐.舞蹈.吃秀等 近20个频道的视频.那么可以批量把多个视频保存到电脑上吗?小编的回答 当然是可以了,一起来操作吧. 需要下载一个视频下载高手 打开美拍视频,在搜 ...

  • 终于知道春天荠菜的保存方法,放半年也不坏,和新鲜的一样鲜

    在春天,碰到这菜不要手软,焯水放冰箱冻起来,随吃随取留住春天 阳春三月,各种野菜开始上市,荠菜也是我们经常吃的春天野菜之一,为什么说是野菜,因为在地里面可以去挖,而且是免费的,但是在城里面就不一样了, ...

  • 微信公众号文章里的图片怎样批量保存到电脑上

    我们在阅读微信公众号的时候,有很多有趣的图片,想保存下来,苦于没有批量采集的技巧.那么如果我们用下图高手这款软件,会不会方便许多 ?一起来看看吧. 准备工具 : 下载一个下图高手 某个浏览器 在网页搜 ...

  • 政采云商品把图片批量保存到同一目录的方法

    请问下图高手可以批量获取政采云的商品图片吗?今天小编来大家介绍一款软件--下图高手,下面一起来看看怎么操作吧. 采集链接: 在政采云搜索栏上,输入关键词进行搜索 在搜索到的页面,挑选商品. 进入商品页 ...

  • 小红书精选社区图片批量保存的方法

    小红书社区这个平台现在都很多人在使用,那么里面的精美图片怎么保存呢?今天就好好和大家分享一下,巧用下图高手软件保存小红书社区图片的方法,我们来看看吧. 打开模拟器中的小红书,在对应的搜索栏中输入关键词 ...