python爬取别人qq空间相册_Python网络爬虫5 - 爬取QQ空间相册

本文介绍了如何使用Python和Selenium模拟登录QQ空间,然后通过分析请求和响应数据,获取相册列表和照片信息,实现照片下载。详细讲述了登录过程、获取g_tk、请求相册信息、解析JSONP数据以及下载照片的步骤。
摘要由CSDN通过智能技术生成

自毕业后,就再也没有用过QQ,QQ空间里记录的是些并不精彩的青葱岁月,但好歹也是份回忆,近日想着学以致用,用Python把QQ空间相册的所有照片爬取下来,以作备份。

分析QQ空间

登录QQ空间

爬取第一步,分析站点,首先需要知道如何登录QQ空间。最初想法是用requests库配置登录请求,模拟登录,但是不久便放弃了这一思路,请看下图↓

根据登录按钮绑定的监听事件可以追踪到该按钮的点击事件如下:

账号加密是必然的,但这一堆堆的代码真心不好解析,有耐心的勇士尽情一试!

在排除这种登录方法后,选择selenium模拟用户登录不失为省时省力的方法,而且我们只是需要通过selenium完成登录,获取到Cookies和后面讲述的g_tk参数后,就可以停用了,所以效率并不太低。

分析空间相册

登录以后,页面会跳转至 https://user.qzone.qq.com/{QQ_NUMBER}, 这时把鼠标移到导航栏你会发现,所有的导航栏链接都是javascript:; 。没错就是这么坑,一切都是暗箱操作。

当然这并不难处理,使用调试工具捕获点击后产生的请求,然后过滤出正确的请求包即可。因为网络包非常多,那么怎么过滤呢,猜想相册数据的API必然会返回个列表list,尝试过滤list然后逐个排除,最后定位到请求包。下面是通过fcg_list过滤后的数据包,列表信息以jsonp格式返回,稍作处理即可当做json格式来读取(后面有讲)。

从Headers和Response可以分别获取到两组重要信息:request 获取相册列表所需的请求信息,包括请求链接和参数

response 数据包包含的所有相册的信息,是每个相册所含照片对应的请求包参数的数据来源

先看请求包:

# url

https://h5.qzone.qq.com/proxy/domain/photo.qzone.qq.com/fcgi-bin/fcg_list_album_v3

# args

g_tk: 477819917

callback: shine0_Callback

t: 691481346

hostUin: 123456789

uin: 123456789

appid: 4

inCharset: utf-8

outCharset: utf-8

source: qzone

plat: qzone

format: jsonp

notice: 0

filter: 1

handset: 4

pageNumModeSort: 40

pageNumModeClass: 15

needUserInfo: 1

idcNum: 4

callbackFun: shine0

_: 1551788226819

其中hostUin, uin都是QQ号,g_tk是必须的且每次重新登录都会更新(后面有讲如何获取),其它有些参数不是必须的,我尝试后整理出如下请求参数:

query = {

'g_tk': self.g_tk,

'hostUin': self.username,

'uin': self.username,

'appid': 4,

'inCharset': 'utf-8',

'outCharset': 'utf-8',

'source': 'qzone',

'plat': 'qzone',

'format': 'jsonp'

}

接下来看jsonp格式的跨域响应包:

shine0_Callback({

"code":0,

"subcode":0,

"message":"",

"default":0,

"data":

{

"albumListModeSort" : [

{

"allowAccess" : 1,

"anonymity" : 0,

"bitmap" : "10000000",

"classid" : 106,

"comment" : 11,

"createtime" : 1402661881,

"desc" : "",

"handset" : 0,

"id" : "V13LmPKk0JLNRY",

"lastuploadtime" : 1402662103,

"modifytime" : 1408271987,

"name" : "毕业季",

"order" : 0,

"pre" : "http:\/\/b171.photo.store.qq.com\/psb?\/V13LmPKk0JLNRY\/eSAslg*mYWaytEtLysg*Q*

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值