QQ空间Python爬虫v2.0--点赞数据分析
2018-06-17 23:42:36来源:未知 阅读 ()
记上一次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显示上面并没有点赞的信息显示=。=
所以这个爬虫只能算一个半成品
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:JS实现的ajax和同源策略
下一篇:Python 日期时间相关
- python3基础之“术语表(2)” 2019-08-13
- python3 之 字符串编码小结(Unicode、utf-8、gbk、gb2312等 2019-08-13
- Python3安装impala 2019-08-13
- 小白如何入门 Python 爬虫? 2019-08-13
- python_字符串方法 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash