遵循着之前的思路,现在来具体的,完善一下这个小项目。(注意,前一篇由于当时水平有限,是有一些错误的,请大家参考这篇博客,当然,由于博主现在的水平依然有限,可能也会有问题,如果大家遇到问题,可以留言反馈给博主,大家一起研究学习)
整个项目的难点可能就在登陆到qq空间中(在已知账号,密码的情况下),我没有太多时间深入的研究通过提交账号,密码和验证码来登陆的问题,但是也有了一个初步的解决方案,就是通过cookie来模拟登陆,这种情况,需要自己先登陆一下空间,拿到cookie,而且cookie是会过期的,因此要及时更新cookie,所以这个方案谈不上舒服,但是如果是学习的目的,或者只是作为个人所需,那么应该也是足够的了。
整个项目分为模拟登陆,获取图片地址,下载图片三个过程。
1.模拟登陆
首先,通过账号,密码登陆到QQ空间,然后点击相册,请求相册列表,这时,我们把cookie手动保存一下,这个在程序中是要使用的;
然后,注意这个链接‘https://h5.qzone.qq/proxy/domain/photo.qzone.qq/fcgi-bin/fcg_list_album_v3’,这个就是请求相册列表的链接,注意,上面这个链接不是完整的链接,我只截取了一部分。
通过利用上一步的链接,和第一步的cookie,我们就可以登录到空间中,并且获取到相册列表的页面了。
2.获取图片地址
解析上面的相册列表的页面,我们就可以得到每个相册的id,和这个相册包含的图片的个数total,我们根据这两个主要的参数,来请求每个相册中的图片。
依然是要自己手动在浏览器中点击一个相册,然后查看浏览器发送了什么请求,这时要注意一个链接‘https://h5.qzone.qq/proxy/domain/photo.qzone.qq/fcgi-bin/cgi_list_photo’,同样的,这也只是实际的链接的一部分,观察这个链接后面的参数,其中,topicId即为要请求的相册id,pageStart为请求的起始图片位置,还有一个就是pageNum这个我们设置为500就好了,500是单次请求返回的图片的最大个数,因此大于500的相册就要多次请求,只要传递好这三个参数,都没有问题。另外,需要注意的是,在请求图片地址时,依然要用到cookie。
接下来的就是,解析返回的图片列表页面,得到图片的地址,根据这个地址来下载图片。
3. 下载图片
有了图片的地址,图片的下载应该不是问题,在这里就不多说了。
代码部分可以移步https://github/youthhou1992/qzone_crawler
更多推荐
python爬虫:批量下载qq空间里的照片(二)
发布评论