首页 > 资讯 > 关键词  > 编程语言最新资讯  > 正文

我一天“偷了”知乎一百万用户 只为证明PHP是比较好的语言

2015-08-04 11:48 · 稿源: epooll.com

看了不少朋友圈里推荐的Python爬虫文章,都觉得太小儿科,处理内容本来就是PHP的强项,Python仅有的好处估计也就天生的Linux自带,和Perl一样,这点觉得挺不够意思的Linux,还是Mac厚道,天生就自带了Python、Perl、PHP、Ruby,当然我也很讨厌讨论一门语言的好坏,每门语言存在就一定有它的道理,反正PHP是全世界较好用的语言,大家都懂的。

前几天比较火的是一个人用C#写了一个多线程爬虫程序,抓取了QQ空间3000万QQ用户,其中有300万用户是有QQ号、昵称、空间名称等信息的,也就是说,有详情也就300万,跑了两周,这没什么,为了证明PHP是全世界较好的语言,我用PHP写了一个多进程爬虫程序,只用了一天时间,就抓了知乎100万用户,目前跑到第8圈(depth=8)互相有关联(关注了和关注者)的用户。

爬虫程序设计:

因为知乎需要登录才能获取到关注者页面,所以从chrome登录之后把cookie拷贝下来给curl程序模拟登录。

使用两大独立循环进程组(用户索引进程组、用户详情进程组),用的是php的pcntl扩展,封装了一个非常好用的类,使用起来和golang的携程也差不多了。

下面是用户详情的截图,用户索引代码类似:

这里插个题外话,经过测试,我的8核的Macbook,跑16进程的速度最快,而16核的Linux服务器,居然是跑8进程最快,这点有点让我莫名其妙了,不过既然测试出最后进程数,就按照最后设置就好啦。

1、用户索引进程组先以一个用户为起点,抓取这个用户的关注了和关注者,然后合并入库,因为是多进程,所以当有两个进程在处理同一个用户入库的时候就会出现重复的用户,所以数据库用户名字段一定要建立仅有索引,当然也可以用redis这些第三方缓存来保证原子性,这个就见仁见智了。

通过步骤一之后,我们就得到下面的用户列表:

2、用户详情进程组按照时间正序,拿到较早入库的用户抓取详情,并且把更新时间更新为当前时间,这样就可以变成一个死循环,程序可以无休止的跑,不断的循环更新用户信息。

程序稳定运行到第二天,突然没有新数据了,检查了一下发现知乎改规则了,不知是为了防我,还是碰巧,反正给我返回的数据是这样的

首先感觉就是胡乱给我输出数据让我采集不到,换了IP、模拟伪装了些数据,都没用,突然感觉这个很熟悉,会不会是gzip?抱着怀疑的态度,试了试gzip,首先当然是告诉知乎不要给我gzip压缩过的数据

把 “Accept-Encoding: gzip,deflate\r\n”; 改成 “Accept-Encoding:deflate\r\n”; 去掉了 gzip,然并卵!

看来知乎是强制要给我gzip压缩数据了,既然如此,那我就解压呗,查了一下php解压gzip,发现就一个函数gzinflate,于是把获取到得内容加上:

$content = substr($content, 10);

$content = gzinflate($content));

这里我真想说,PHP真的是全世界较好的语言,就两个函数,就彻底解决了问题,程序又欢快的跑起来了。

在匹配内容的时候,知乎的细心也是给了我无数的帮助,例如我要分清用户性别:

哈哈开玩笑的拉,其实是样式里面有 icon-profile-female 和 icon-profile-male ^_^

我蛋疼的抓了它那么多用户,到底有什么用呢?

其实没什么用,我就是闲的蛋疼 ^_^

有了这些信息,其实就可以做一些别人开头闭口就乱吹一通的大数据分析拉

最常见的当然是:

1、性别分布

2、地域分布

3、职业分布

4、每个职业的男女比例

当然,按照关注人数、浏览人数、提问数、回答数等排序,看看人民都在关注什么,民生、社会、地理、政治,整个互联网都尽收眼底拉。。

也许,你还可以把头像拿来分析,用开源的验黄程序,把色情的筛选出来,然后去拯救东莞? ^_^

然后,你还可以看看那些大学出来的人,最后都干了什么。

有了这些数据,是不是可以打开脑洞 ^_^

下面是利用这些数据做出来的一些有趣的图表,实时图表数据可以去 https://www.epooll.com/zhihu/ 上看

举报

  • 相关推荐
  • 从打造陪聊爆款到重写游戏底层逻辑,百万用户AI团队押注“AI游戏2.0”

    白鲸编辑部对元象的了解始于他们在2024年推出的 AI 角色扮演出海应用「Saylo」。 这款产品并没有赶上品类爆发的最佳红利期,却凭借自研模型和精细的创作者运营,在不到1年的时间内做到了300万全球用户,一度登上中国台湾、中国香港娱乐免费榜榜首。 这支团队的背景同样引发了我们的关注。元象成立于2021年初,创始人姚星曾任腾讯副总裁,主导组建腾讯人工智能实验室

  • 为什么空调26摄氏度比较好 医生:避免“冷中暑”

    近日,一位男子在单位加班出门后出现头晕目眩,恶心想吐”的症状。 该男子表示,当时空调温度开的很低,外面又特别的热。 经过检查,医生告诉他他患上了冷中暑”。 医生解释称:从低温空调房到室外高温环境,从酷热的室外直接扎进”空调间,或出汗后立即洗冷水澡,食用大量冷饮等,人体不能迅速适应温差变化,就可能出现冷中暑”。 温差越大,冷中暑”出现的

  • 家用路由器与工业路由器差异全解析,哪个牌子的工业路由器比较好?

    本文对比分析了工业路由器与家用路由器的核心差异。工业路由器专为恶劣环境设计,具备-40℃至75℃的宽温工作范围、IP65以上防护等级、抗电磁干扰等特性,支持复杂网络协议和安全标准,适用于制造、能源等关键领域。家用路由器则注重易用性和性价比,适用于稳定家庭环境,功能以满足日常上网需求为主。工业路由器在可靠性、稳定性和安全性方面要求更高,价格也相对昂贵,而家用路由器维护简单、价格亲民。蒲公英4G工业路由器凭借卓越性能成为企业优选,支持远程办公、设备监控等工业物联网应用,打破地域限制,助力企业数字化转型。

  • 网友住酒店光脚洗澡感染HPV 医生回应:需注意防护

    ​近日,“酒店光脚洗澡可能感染HPV”这一话题在网络上迅速发酵,引发了公众对公共场所卫生安全问题的广泛关注和热烈讨论。据媒体报道以及医学专家分析,在酒店等公共浴室光脚洗澡,确实存在感染跖疣病毒的风险,而该病毒正是一种低危型HPV病毒。 跖疣,这一由人乳头瘤病毒(HPV)引发的足部良性增生物,其感染多发生在温暖潮湿的环境中。医学专家指出,当足部皮

  • 00后小伙暴走6天只为忘掉前女友 采野果、喝溪水充饥

    近日,余杭消防救援大队分指挥中心接到110转警,一起独居男子失联事件牵动众人的心。 接警后,消防力量立即启动响应机制协同各部门展开搜寻。通过调取监控,最后出现在监控画面中的身影,显示他走进了荒无人烟的深山。 各部门迅速调整搜寻策略,先后出动110余人次救援力量。炎炎烈日下,救援人员不顾高温酷暑,穿梭在密林之中,甚至出动了警犬、无人机,对深山�

  • 滴滴送货上线“极速赔”:只要无法证明用户造成 承诺异议必赔

    在物流配送竞争日益激烈的当下,滴滴送货正式推出极速赔”服务,以解决用户在货物运输过程中的后顾之忧。 极速赔” 的核心规则极具诚意,只要平台无法证明货物损失、延误等问题是由用户造成的,便承诺异议必赔”。 这意味着,当用户对配送结果提出合理异议时,无需耗费大量精力自证清白,平台会主动承担相应责任。而且,赔付流程力求便捷高效,

  • 酒店光脚洗澡可能感染HPV?医生回应:需注意防护

    近日,“酒店光脚洗澡可能感染HPV”的话题引发广泛关注和热议。据媒体报道及医学专家指出,在酒店等公共场所光脚洗澡,确实存在感染跖疣病毒(一种低危型HPV病毒)的可能性,引发公众对公共场所卫生安全的担忧。 ​跖疣是由人乳头瘤病毒(HPV)引起的足部良性增生物,属于低危型HPV感染。在温暖潮湿的环境中,如酒店浴室,如果足部皮肤有微小破损或伤口,且与病毒

  • 医生回应酒店光脚洗澡或感染HPV:尽量避免在公共场所光脚

    近日,网络上关于在酒店光脚洗澡可能感染病毒的讨论持续升温。 6月30日,医生指出,光脚在酒店等公共场所洗澡确实存在感染跖疣病毒的风险。 跖疣,这一由人乳头瘤病毒引起的足部良性增生物,属于低危型HPV病毒。医生解释说,在足部环境潮湿的情况下,病毒更容易滋生和传播

  • 苹果用户最好购车选择!小米YU7深度兼容:iPhone、Apple Watch都能控车

    小米YU7已开启交付,首批车主都已经提车回家了。 今天小米汽车官方介绍,YU7延续了SU7的设计理念,充分针对苹果用户优化用车体验,打造让苹果用户也能轻松上手的车型。 首先是iPhone控车更加便捷高效: 支持UWB近场控车与iOS小组件远程控车,比如携带激活了UWB钥匙的苹果手机站在车前3秒,就能打开前备箱; 也可以通过iPhone上的Action Button自定义车控功能,比如一键控车�

  • 医生回应酒店光脚洗澡或感染HPV:尽量避免在公共场所光脚行走

    近日,酒店光脚洗澡可能感染跖疣病毒的话题引发广泛讨论。 医学专家指出,跖疣是由HPV病毒(人乳头瘤病毒)引起的足部良性增生,主要与HPV-1、2、4、27、57等亚型相关。这种疾病在潮湿环境中更易传播,足部外伤、摩擦或多汗者风险较高。 临床表现显示,跖疣会导致足跖部角质增生,可见疏松角质软芯及毛细血管出血形成的特征性黑点。多数患者行走时会出现明显疼痛�