QQ空间Python爬虫v2.0--点赞数据分析

记上一次v1.0的空间爬虫之后,准备再写一个爬虫分析本人说说的点赞情况

首先分析Json

可以发现点赞的节点为data-->vFeeds(list)-->like-->likemans(list)-->user-->nickname&uin

代码如下:

 1 for i in range(0, page):
 2     try:
 3         html = requests.get(url_x + str(numbers) + url_y, headers=headers).content
 4         data = json.loads(html)
 5
 6         if ‘vFeeds‘ in data[‘data‘]:
 7             for vFeed in data[‘data‘][‘vFeeds‘]:
 8                 if ‘like‘ in vFeed:
 9                     for like_man in vFeed[‘like‘][‘likemans‘]:
10                         qq_list.append(int(like_man[‘user‘][‘uin‘]))
11                         # 这个dict需要定义在循环内,因为下面list.append()是引用传递
12                         like_me_map = dict()
13                         like_me_map[‘nick_name‘] = like_man[‘user‘][‘nickname‘]
14                         like_me_map[‘qq‘] = like_man[‘user‘][‘uin‘]
15                         like_me_list.append(like_me_map)
16         numbers += 40
17         time.sleep(10)
18         print(‘正在分析前‘ + str(numbers) + ‘条数据‘)
19     except:
20         numbers += 40
21         time.sleep(10)
22         print(‘第‘ + str(numbers) + ‘条数据附近分析出错‘)

like_me_list是一个list of dict,qq_list是所有QQ号的集合,现在定义一个dict来方便查询qq与昵称:

1 # 建立一个QQ与昵称对应的map,以便查询
2 qq_name_map = dict()
3 for man in like_me_list:
4     qq_name_map[man[‘qq‘]] = man[‘nick_name‘]

利用set实现自动去重并计算count

1 # 计算点赞次数,并将次数与QQ映射存入map
2 qq_set = set(qq_list)
3 for qq in qq_set:
4     like_me_result[str(qq)] = qq_list.count(qq)

再按点赞次数降序排序处理,此处代码比较丑陋=。=:

1 # 以下处理为:按点赞次数排序后存入一个新的map作为最终结果,代码很不优雅=。=
2 num_result = sorted(like_me_result.values(), reverse=True)
3 print(num_result)
4 for num in num_result:
5     for key in like_me_result.keys():
6         if like_me_result[key] == num:
7             result[qq_name_map[key]+‘(‘ + key + ‘)‘] = num

最后,写入文件,大功告成:

1 try:
2     with open(os.getcwd() + ‘\\‘ + ‘like_me_result.txt‘, ‘wb‘) as fo:
3         for k, v in result.items():
4             record = k + ‘: 点赞‘ + str(v) + ‘次!\r\n‘
5             fo.write(record.encode(‘utf-8‘))
6         print("点赞数据结果分析写入完毕")
7
8 except IOError as msg:
9     print(msg)

然而最后我发现一个问题,就是QQ空间返回的json点赞数据并不是完整的,如图:

num代表点赞人数,一共13人点赞,但是我观察发现所有说说点赞人数集合likemans最多只有3个

我猜可能是因为mobile QQ空间页面不需要显示点赞信息,所以才没有完整的点赞信息,如图:

UI显示上面并没有点赞的信息显示=。=

所以这个爬虫只能算一个半成品

时间: 2024-10-30 00:47:07

QQ空间Python爬虫v2.0--点赞数据分析的相关文章

QQ空间Python爬虫(1)---网站分析

闲来无事准备写一个爬虫来爬取自己QQ空间的所有说说和图片-.- 首先准备工作,进入手机版QQ空间,分析页面: 我们发现,手机版空间翻页模式是采用瀑布流翻页(查看更多),而非传统翻页模式,所以我们需要来分析一下点击"查看更多"时发送的请求: 可以发现,上面红框中的xhr就是点击"查看更多"时发送的请求,我们再进一步分析: 如图,红框中的request url和request headers是我们需要的信息,首先我们在代码中加入请求头headers: 1 headers

什么是Python爬虫呢?0基础能够学会吗?

Python爬虫学习难不难?大家都知道,Python是最容易上手的编程语言,如果具有一定基础的话,学习Python是非常容易的,同时Python适合零基础人员学习,更是初学者的首选.而爬虫是Python的一大应用领域,现在市场Python爬虫工程师需求量高,吸引了不少的学习者,那么学习Python爬虫难不难?何为Python爬虫? 什么是Python爬虫呢? 爬虫有叫做网络爬虫,可以理解为蜘蛛在网络上进行爬行,互联网是一个巨大的网络,爬虫就是行走在网络上的爬虫,遇到自己喜欢的食物,就会抓取下来,

[python]糗百热点爬虫v2.0【15/4/21更新】

刚刚测试了糗百爬虫,结果第二天糗百的源代码就换格式了= = 改了下正则表达式,但是内容中存在的html转码还未匹配,不影响使用 #! -*- coding:utf-8 -*- #! usr/bin/python ''' #===================================================== # FileName: Spider_qb.py # Describe: 从糗百下载段子并依次播放 # Modifier: sunny # Since: 2015-04-

python爬虫步骤 (新手备学 )爬虫编程。

Python爬虫是用Python编程语言实现的网络爬虫,主要用于网络数据的抓取和处理,相比于其他语言,Python是一门非常适合开发网络爬虫的编程语言,大量内置包,可以C Python爬虫可以做的事情很多,如搜索引擎.采集数据.广告过滤等,Python爬虫还可以用于数据分析,在数据的抓取方面可以作用巨大! Python爬虫架构组成 1. URL管理器:管理待爬取的url集合和已爬取的url集合,传送待爬取的url给网页下载器: 2. 网页下载器:爬取url对应的网页,存储成字符串,传送给网页解析

python爬虫爬取QQ说说并且生成词云图,回忆满满!

Python(发音:英[?pa?θ?n],美[?pa?θɑ:n]),是一种面向对象.直译式电脑编程语言,也是一种功能强大的通用型语言,已经具有近二十年的发展历史,成熟且稳定.它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务.它的语法非常简捷和清晰,与其它大多数程序设计语言不一样,它使用缩进来定义语句. Python支持命令式程序设计.面向对象程序设计.函数式编程.面向切面编程.泛型编程多种编程范式.与Scheme.Ruby.Perl.Tcl等动态语言一样,Python具备垃圾回收

QQ空间爬虫最新分享,一天 400 万条数据(附代码地址)

http://mp.weixin.qq.com/s?__biz=MzAxMjUyNDQ5OA==&mid=2653552228&idx=1&sn=e476bf23556406cbce7de65508d79843&chksm=806dd0d9b71a59cf2b062a19309c849a62ba15790898e5e619205f0f5ec84a90025a8cea05e9&mpshare=1&scene=23&srcid=11252MeE6Qu1D

抓取60000+QQ空间说说做一次数据分析

对于QQ空间的数据一直来是垂涎不已,老早就想偷过来研究研究,这几天闲下来便开始动手... 整个程序的流程为:登录-->获取cookie-->获取所有的好友qq_number-->根据所有的好友qq遍历他们的说说-->get所有好友的说说数据 程序跑了20多分钟就跑完了,,共282好友,,跑了60000+说说 有些个人隐私我抹掉了..甭介意.嘿嘿 1.登录-->获取cookie 打开http://i.qq.com/,如下图 但大多数时候是这样的 我们这里使用账号密码登录,为了方

不用写软件,纯JS 实现QQ空间自动点赞

这里分享一个自己写的点赞JS,已实现了右边图片点赞,有兴趣的朋友可以加上去玩玩.打开浏览器的开发者模式运行就可以看到效果了 function ilike() { var b = document.getElementById("fhp_like"); var c = b.childNodes[1]; console.log(c.childNodes.length); for (var i = 0; i < c.childNodes.length; i++) { var a1 =

QQ空间自动评论自动点赞 微博自动点赞自动转发神器带源码(超简单)

原理:先找到对应的图,得到坐标点击.或转发,向下翻页.自动巡屏.关于怎么判断是否已经赞或已经转发,是通过图片不一样,或者把屏从上到下分多个块实现的. // QQ空间自动点赞机 小黄人为您点赞. //12行代码实现.源码:Rem head FindPic 0,0,1024,768,"Attachment:\zan.bmp",1,intX,intY If intX > 0 And intY > 0 Then MoveTo intX+5, intY+5 Delay 100 Lef