偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

我用爬蟲(chóng)一天時(shí)間“偷了”知乎一百萬(wàn)用戶,只為證明PHP是世界上最好的語(yǔ)言

開(kāi)發(fā) 開(kāi)發(fā)工具
看了不少朋友圈里推薦的Python爬蟲(chóng)文章,都覺(jué)得太小兒科,處理內(nèi)容本來(lái)就是PHP的強(qiáng)項(xiàng),Python唯一的好處估計(jì)也就天生的Linux自 帶,和Perl一樣,這點(diǎn)覺(jué)得挺不夠意思的Linux,還是Mac厚道,天生就自帶了Python、Perl、PHP、Ruby,當(dāng)然我也很討厭討論一門 語(yǔ)言的好壞,每門語(yǔ)言存在就一定有它的道理,反正PHP是全世界最好用的語(yǔ)言,大家都懂的^_^

看了不少朋友圈里推薦的Python爬蟲(chóng)文章,都覺(jué)得太小兒科,處理內(nèi)容本來(lái)就是PHP的強(qiáng)項(xiàng),Python唯一的好處估計(jì)也就天生的Linux自 帶,和Perl一樣,這點(diǎn)覺(jué)得挺不夠意思的Linux,還是Mac厚道,天生就自帶了Python、Perl、PHP、Ruby,當(dāng)然我也很討厭討論一門 語(yǔ)言的好壞,每門語(yǔ)言存在就一定有它的道理,反正PHP是全世界最好用的語(yǔ)言,大家都懂的^_^

前幾天比較火的是一個(gè)人用C#寫(xiě)了一個(gè)多線程爬蟲(chóng)程序,抓取了QQ空間3000萬(wàn)QQ用戶, 其中有300萬(wàn)用戶是有QQ號(hào)、昵稱、空間名稱等信息的,也就是說(shuō),有詳情也就300萬(wàn),跑了兩周,這沒(méi)什么,為了證明PHP是全世界最好的語(yǔ)言,雖然大 家都懂的^_^,我用PHP寫(xiě)了一個(gè)多進(jìn)程爬蟲(chóng)程序,只用了一天時(shí)間,就抓了知乎100萬(wàn)用戶,目前跑到第8圈(depth=8)互相有關(guān)聯(lián)(關(guān)注了和關(guān) 注者)的用戶。

爬蟲(chóng)程序設(shè)計(jì):

因?yàn)橹跣枰卿洸拍塬@取到關(guān)注者頁(yè)面,所以從chrome登錄之后把cookie拷貝下來(lái)給curl程序模擬登錄。

使用兩大獨(dú)立循環(huán)進(jìn)程組(用戶索引進(jìn)程組、用戶詳情進(jìn)程組),用的是php的pcntl擴(kuò)展,封裝了一個(gè)非常好用的類,使用起來(lái)和golang的攜程也差不多了。

下面是用戶詳情的截圖,用戶索引代碼類似

這里插個(gè)題外話,經(jīng)過(guò)測(cè)試,我的8核的Macbook,跑16進(jìn)程的速度最快,而16核的Linux服務(wù)器,居然是跑8進(jìn)程最快,這點(diǎn)有點(diǎn)讓我莫名其妙了,不過(guò)既然測(cè)試出最后進(jìn)程數(shù),就按照最后設(shè)置就好啦。

1、用戶索引進(jìn)程組先以一個(gè)用戶為起點(diǎn),抓取這個(gè)用戶的關(guān)注了和關(guān)注者,然后合并入庫(kù),因?yàn)槭嵌噙M(jìn)程,所以當(dāng)有兩個(gè)進(jìn)程在處理同一個(gè)用戶入庫(kù)的時(shí)候 就會(huì)出現(xiàn)重復(fù)的用戶,所以數(shù)據(jù)庫(kù)用戶名字段一定要建立唯一索引,當(dāng)然也可以用redis這些第三方緩存來(lái)保證原子性,這個(gè)就見(jiàn)仁見(jiàn)智了。

通過(guò)步驟一之后,我們就得到下面的用戶列表:

2、用戶詳情進(jìn)程組按照時(shí)間正序,拿到最先入庫(kù)的用戶抓取詳情,并且把更新時(shí)間更新為當(dāng)前時(shí)間,這樣就可以變成一個(gè)死循環(huán),程序可以無(wú)休止的跑,不斷的循環(huán)更新用戶信息。

程序穩(wěn)定運(yùn)行到第二天,突然沒(méi)有新數(shù)據(jù)了,檢查了一下發(fā)現(xiàn)知乎改規(guī)則了,不知是為了防我,還是碰巧,反正給我返回的數(shù)據(jù)是這樣的

第一感覺(jué)就是胡亂給我輸出數(shù)據(jù)讓我采集不到,換了IP、模擬偽裝了些數(shù)據(jù),都沒(méi)用,突然感覺(jué)這個(gè)很熟悉,會(huì)不會(huì)是gzip?抱著懷疑的態(tài)度,試了試gzip,首先當(dāng)然是告訴知乎不要給我gzip壓縮過(guò)的數(shù)據(jù)

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

看來(lái)知乎是強(qiáng)制要給我gzip壓縮數(shù)據(jù)了,既然如此,那我就解壓?jiǎn)h,查了一下php解壓gzip,發(fā)現(xiàn)就一個(gè)函數(shù)gzinflate,于是把獲取到得內(nèi)容加上:

$content = substr($content, 10);

$content = gzinflate($content));

這里我真想說(shuō),PHP真的是全世界最好的語(yǔ)言,就兩個(gè)函數(shù),就徹底解決了問(wèn)題,程序又歡快的跑起來(lái)了。

在匹配內(nèi)容的時(shí)候,知乎的細(xì)心也是給了我無(wú)數(shù)的幫助,例如我要分清用戶性別:

    

哈哈開(kāi)玩笑的拉,其實(shí)是樣式里面有 icon-profile-female 和 icon-profile-male ^_^

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

其實(shí)沒(méi)什么用,我就是閑的蛋疼 ^_^

有了這些信息,其實(shí)就可以做一些別人開(kāi)頭閉口就亂吹一通的大數(shù)據(jù)分析拉

最常見(jiàn)的當(dāng)然是:

1、性別分布

2、地域分布

3、職業(yè)分布

4、每個(gè)職業(yè)的男女比例

當(dāng)然,按照關(guān)注人數(shù)、瀏覽人數(shù)、提問(wèn)數(shù)、回答數(shù)等排序,看看人民都在關(guān)注什么,民生、社會(huì)、地理、政治,整個(gè)互聯(lián)網(wǎng)都盡收眼底拉。。

也許,你還可以把頭像拿來(lái)分析,用開(kāi)源的驗(yàn)黃程序,把色情的篩選出來(lái),然后去拯救東莞? ^_^

然后,你還可以看看那些大學(xué)出來(lái)的人,最后都干了什么。

有了這些數(shù)據(jù),是不是可以打開(kāi)腦洞 ^_^

下面是利用這些數(shù)據(jù)做出來(lái)的一些有趣的圖表,實(shí)時(shí)圖表數(shù)據(jù)可以去 http://www.epooll.com/zhihu/ 上看

責(zé)任編輯:王雪燕 來(lái)源: 楊澤濤
相關(guān)推薦

2015-09-14 15:36:27

PHP爬蟲(chóng)語(yǔ)言

2018-12-04 15:46:53

編程語(yǔ)言Python

2019-11-18 15:07:54

編程語(yǔ)言C#

2015-08-11 09:18:44

程序員最好

2022-09-19 21:34:04

PHPFacebook語(yǔ)言

2015-10-29 13:22:09

php數(shù)據(jù)分析爬蟲(chóng)

2016-01-22 12:20:11

PHP數(shù)據(jù)爬取分析

2020-06-08 10:21:56

操作系統(tǒng)C語(yǔ)言Unix

2015-09-28 11:01:41

PHP開(kāi)發(fā)抓取知乎用戶

2011-07-04 09:03:39

Web模版

2018-07-19 19:07:33

語(yǔ)言編程語(yǔ)言程序

2017-01-10 09:48:58

PHP語(yǔ)言Perl

2015-09-15 10:51:35

2013-04-24 09:57:08

Excel微軟

2017-04-05 08:41:49

2016-12-22 17:01:11

2011-05-24 10:25:21

2018-03-19 07:50:34

編程知乎框架

2013-09-12 15:39:30

編程語(yǔ)言BANCStar

2025-03-13 00:35:00

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)