前言

​ 放假以来一直无所事事,刚好刚放假那段时间学习了爬虫,也一直没有特别想爬取的网站,闲来无事就想试着爬取一下pixiv帮我以后更方便的下载图片比如涩图(bushi)。

….现在写完了下载了好多图片,确实好涩 草

设想

​ 一开始是打算使用selenium来写,感觉用selenium一步步来调试会比较方便,而且最关键的是如果使用selenium登录的时候能很好的规避ReCAPTCHA验证码这个问题,但是最后发现这个方法太低效了,在这里应该也只有装逼成分没有什么效率成分了(。

​ 经过一番规划后,基本打算实现获取排行榜图片、通过用户id获取图片、通过标签搜素获取图片这三个主要功能,呐规划好之后就开始为时一天的痛苦代码历程了www。

过程

一、模拟登录

​ 成功找到pixiv官网之后,刚打算开始大展拳脚的时候,突然发现这网站居然需要登录,那就只能通过request库的session进行模拟登录了。首先输入自己账号进行登录同时通过抓包工具找到登录的发送的Ajax文件。很明显下图里面的login?lang=zh就是我们要找Ajax文件。

1

找到文件后对文件进行分析,可以看到它的Request URL和发送的方式是POST。

image-20210719180111496

接下来看的是它的Form Data部分的数据。可以看到它需要发送的有password、pixiv_id、post_key、source、return_to等一些空白的无关紧要的数据。

image-20210719181631728

password和pixiv_id就不需要过多解释了,经过多次登录我们可以发现post_key在不断的变,而return_to取决于我们进入登录界面的前一个转入界面。经过不断寻找(此处省略一万字)可以发现这里有个post_key,再次登录进行测试可以发现这个post_key就是我们登录需要的post_key。我们可以通过xpath把这个post_key给拿出来。

image-20210719182340350

拿到之后,把登录需要的data、url、headers写入就可以通过session进行模拟登录了。

image-20210719182640260

二、排行榜获取