GitHub

您所在的位置:网站首页 酷安via主页 GitHub

GitHub

2024-07-12 14:49| 来源: 网络整理| 查看: 265

酷安用户数据爬虫案例 背景

「酷安」是一个成长中的优秀国内应用社区。截至目前(201705),注册用户数在100万左右(当然,活跃用户并没有这么多)。 为了满足自己了解酷安粉丝数排名情况的好奇心,以及学习实践 Python,于是写了这个小玩意儿。

在此之前,已有酷友 @unnamed5719 基于 Python 实现对酷安全网用户的爬取分析,同时也开源了他的代码以及分析结果。(去查看:酷安大数据(伪)) 而这个小项目也是在其启发之下完成,感谢 @unnamed5719!

分析

每一位注册酷安的用户会获得一个唯一的ID,这些ID从10001开始依次递增。

如何获取每个用户的数据呢?有两个方案:

解析酷安用户网页

http://www.coolapk.com/u/{uid}

http://www.coolapk.com/u/{uid}/album

调用酷安APP的API

https://api.coolapk.com/v6/user/profile?uid={uid}

比较:

方案一 方案二 速度 快 慢 信息量 少(用户名、粉丝数、动态数、关注APP数、发现APP数) 多(除方案一提及的,还有性别、应用集数等) 其他 接口需要的X-App-Token值难于构造

这两个方案,均已实现。以下仅以方案一为例进行说明。

获取的这些数据包括用户隐私信息吗?

不会涉及到酷安用户隐私。抓取的这些数据均为酷安已公开的用户数据。

准备 运行系统:Ubuntu 14 数据库:MySQL 5.5 apt-get update apt-get upgrade apt-get install mysql-server apt-get install mysql-client CREATE DATABASE coolapk; USE coolapk; CREATE TABLE user( id INT PRIMARY KEY, name VARCHAR(64), fan INT DEFAULT 0, feed INT DEFAULT 0, app INT DEFAULT 0, find INT DEFAULT 0, time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP); 开发语言:Python 3 apt-get install python3 apt-get install python3-pip pip3 install pymysql pip3 install sqlalchemy GO!

以每次处理10000用户的节奏,进行100次执行。

python3 coolapk_user_stats_via_htm.py 10000 10000 python3 coolapk_user_stats_via_htm.py 20000 10000 python3 coolapk_user_stats_via_htm.py 30000 10000 ...

以腾讯家的云服务器(配置:单核/1GB/1Mbps)为例,

每秒平均处理10.2个用户 每个用户平均消耗13.14KB流量

那么,按酷安百万用户计,

大概耗时1634min(27h)(单机单线程) 大约消耗12.5GB流量

如果使用多台机器同时跑,可在数小时内完成。

结果

以下统计基于 2017-05-19 - 2017-05-23 时间段采集的数据

用户数 SELECT COUNT(*) FROM user;

注册用户数:965289 97万

SELECT COUNT(*) FROM user WHERE fan = 0 AND feed = 0 AND app = 0 AND find = 0;

沉睡用户数:403651 40万,占比42%

评分排名TOP100

设定评分计算规则:

粉丝数 动态数 关注APP数 发现APP数 权值 0.50 0.40 0.08 0.02

各项权值由我个人随意设定,因此以下数据仅供参考。

SELECT @rownum:=@rownum+1 AS '#', CONCAT('[@', name, '](http://www.coolapk.com/u/', id, ')') AS 'user', FLOOR(fan * 0.5 + feed * 0.4 + app * 0.08 + find * 0.02) AS 'score', fan, feed, app, find FROM user, (SELECT @rownum:=0) temp ORDER BY score DESC LIMIT 100; # 酷友 得分 粉丝数 动态数 关注APP数 发现APP数 1 @酷安小编 8860 15374 2869 179 595 2 @八百标兵 7727 12784 3193 424 1205 3 @辣椒爱上水果 5761 11509 16 5 0 4 @夜之浪子 4189 2144 7747 53 724 5 @pandecheng 3146 2720 3072 6836 535 6 @tastypear 2989 4778 1478 16 383 7 @尘封之泪 2984 5661 384 4 0 8 @阿酷 2706 4396 1255 44 162 9 @zesty 2695 3113 2741 2 2114 10 @小浅丶 2349 4637 76 4 1 11 @柚木舟 2318 4500 155 82 0 12 @Fince 2122 864 4003 1109 24 13 @various 2056 4054 64 41 9 14 @fkzhang 2053 4058 60 0 0 15 @DBin_K 1941 1278 3214 193 90 16 @黄福林 1743 2593 1117 1 7 17 @iKirby 1734 2470 1008 1192 24 18 @绯色の炎 1626 281 2851 4313 16 19 @zhou45 1566 3101 41 0 4 20 @lyh123 1447 488 2671 1608 298 21 @feemo 1404 1162 1925 506 641 22 @没有密码找回 1345 2646 55 1 1 23 @Hiapkangel 1334 1712 1160 176 7 24 @EMK2000 1279 692 2276 95 772 25 @西瓜菌 1278 1597 1161 182 61 26 @婷媌 1247 2354 176 2 5 27 @哈尼小姐姐 1237 2263 245 105 1 28 @阿明1975 1197 103 2760 1 2075 29 @Brevent 1179 2334 29 5 1 30 @PandaTV 1177 2184 156 286 8 31 @Trumeet 1174 2073 181 820 5 32 @微信撩骚 1163 115 2722 212 11 33 @veryyoung 1153 2289 21 5 5 34 @狐狸等花开 1139 2269 13 0 0 35 @手谈姬 1139 2211 84 0 7 36 @By_syk 1127 1750 571 289 32 37 @suesyria 1126 563 1807 1353 702 38 @少女的酥胸_ 1090 2023 198 1 1 39 @Aviraxp 1027 1390 829 2 33 40 @顾挽歌 1025 2007 51 15 1 41 @狼大 1023 1825 222 279 0 42 @Pandaria 1020 1899 177 7 4 43 @千舞梦三 1019 302 2132 89 415 44 @风澈 995 1952 27 107 1 45 @llllllllllll666 964 621 1591 207 34 46 @讞諳 961 1289 746 166 255 47 @茶杯 934 1327 666 15 160 48 @维生素茜 933 226 1961 446 27 49 @SDRAGON 924 1742 60 370 3 50 @科学松鼠会 911 360 1793 87 377 51 @atony 904 1382 514 75 70 52 @wuxianlin 902 1793 15 1 0 53 @Time_ 901 1730 92 1 0 54 @LetITFly 896 1791 3 3 1 55 @noear 893 1206 725 4 5 56 @liubaoyua 884 1408 420 147 33 57 @Kanmurimori 883 402 1502 994 122 58 @QQ2223274676 848 33 2064 82 3 59 @tyzrj766 846 26 1952 654 8 60 @Dr_Pure 841 290 1714 118 79 61 @小李熹熹 841 1665 21 9 0 62 @虎小八 839 609 1209 640 4 63 @tieaa 838 681 703 2640 259 64 @潇湘夜雨缘 837 1513 174 137 6 65 @一字 828 42 1988 129 103 66 @寒歌 808 1244 464 11 1 67 @martincz 795 1526 79 4 4 68 @初音是谁 791 292 1497 564 73 69 @Leon连续 789 1563 17 13 2 70 @haseoxth 787 74 1843 154 66 71 @囧机油aprilone 783 116 707 5536 0 72 @solovid 781 21 1911 70 41 73 @风居住的街道 774 1432 82 324 1 74 @八雲紫 769 386 1438 3 59 75 @iVanilla 756 529 1227 11 6 76 @zfj012 753 1188 200 996 2 77 @少侠就是我啊 751 102 1610 700 18 78 @一纸希壁纸控 750 642 1069 20 2 79 @我是笑话 745 200 1573 193 49 80 @Android_L_User 739 1236 303 2 8 81 @郁闷人 731 378 1344 61 10 82 @UBIKS 723 897 665 96 83 83 @苏阿墨 718 23 140 8134 0 84 @安卓大帝 717 574 1075 0 10 85 @mooooo 712 111 1631 43 56 86 @xyphillipyx 698 1220 216 15 24 87 @yuki918 689 1172 258 0 3 88 @n5202853 682 1305 5 346 9 89 @丿魸 680 101 1489 409 81 90 @chendeshen 677 18 86 7924 4 91 @lqmouse 674 6 221 7292 0 92 @Misaka9903 664 1163 167 195 6 93 @七曜之律 663 327 1138 528 128 94 @酷宇小编 662 33 1581 167 1 95 @gujiangjiang 659 39 1596 19 24 96 @fairyex 658 1250 82 2 2 97 @Resume 654 941 456 3 56 98 @蓝莓味绿茶 653 966 422 25 9 99 @Kiriya 653 160 1306 631 15 100 @zjszjs 648 23 1130 2311 0

我是第36位,哈哈。

如何在数据库中查询指定用户的评分情况?

SELECT * FROM (SELECT @rownum:=@rownum+1 AS '#', id, name, fan, feed, app, find, FLOOR(fan * 0.5 + feed * 0.4 + app * 0.08 + find * 0.02) AS 'score' FROM user, (SELECT @rownum:=0) temp WHERE fan > 0 OR feed > 0 OR app > 0 OR find > 0 ORDER BY score DESC ) stats WHERE name = 'xxx';

在线速查(服务将于2017年06月关闭): https://coolapkuserstats.by-syk.com

License Copyright 2017 By_syk Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Copyright © 2017 By_syk. All rights reserved.



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3