我 1天“偷了”知乎1000萬用戶,PHP果然是世界上最好的語言

我 1天“偷了”知乎1000萬用戶,PHP果然是世界上最好的語言

本文由【php學習特邀群】提供

看到很多盆友圈裡分享的Python爬蟲文章,感覺實在有點小兒科呢,內容處理那就是PHP的強項啊。雖然我也很討厭討論一門語言的好壞,每門語言存在就一定有它的道理,但是PHP是全世界最好用的語言,在座的各位沒意見吧?

那會兒有個火極一時的多線程爬蟲程序,抓取了老馬空間幾百萬用戶,其中幾十萬用戶是有QQ號碼、暱稱、性別、年齡、所在地等信息的。不過,這算啥子嘛。

我 1天“偷了”知乎1000萬用戶,PHP果然是世界上最好的語言

本文由【php學習特邀群】提供

我決定用php也來操作一番,我用php花了86400秒——1440分鐘——24小時——一天的時間,也寫了一個多進程爬蟲程序,低調的抓取了知乎1000萬用戶。

我 1天“偷了”知乎1000萬用戶,PHP果然是世界上最好的語言

本文由【php學習特邀群】提供

(這是一張用戶詳情的代碼截圖) 知乎是需要登錄才能獲取到關注者的頁面的,所以我們從Chrome登錄之後把cookie拷貝下來給curl程序模擬登錄上去。(為什麼要用Chrome呢?精簡啊,給力啊)

我 1天“偷了”知乎1000萬用戶,PHP果然是世界上最好的語言

通過以下步驟,我們就會得到這個用戶列表 我們先以單個用戶為起始點,抓取這個用戶的關注者和被關注者入庫。 因為是多進程,所以當有2個進程在處理同一個用戶入庫的時候就會出現重複,所以數據庫用戶名字段一定要建立唯一索引,唯一!

用戶詳情進程組 按時間拿到最先入庫的用戶詳情,並且更新時間為目前時間,這樣就會形成一個有趣的循環,程序會不停的跑,不斷的獲取用戶信息。

我 1天“偷了”知乎1000萬用戶,PHP果然是世界上最好的語言

本文由【php學習特邀群】提供

安安穩穩到了第二天;咦,怎麼突然沒有新數據了,檢查了一番原來知乎改規則了,看來我的動作被發現了呢(給我返回的數據是圖上這樣的) 我感覺就是瞎亂的給我輸出數據不讓我採集;換IP、模擬偽裝數據,都沒用,嗦—好像有股熟悉的感覺

我 1天“偷了”知乎1000萬用戶,PHP果然是世界上最好的語言

本文由【php學習特邀群】提供

gzip?我趕緊試了試gzip。把 “Accept-Encoding: gzip,deflate\r\n”;去掉了 gzip,然並卵,簡直萌萌噠! 看來得使大招了—函數gzinflate 不知道大家了不瞭解,把獲取到得內容加上: $content=substr($content, 10); $content=gzinflate($content));

我 1天“偷了”知乎1000萬用戶,PHP果然是世界上最好的語言

本文由【php學習特邀群】提供

哎,PHP果然是全世界最好的語言啊,隨便兩個函數,就解決了問題,程序又了跑起來~

涼風有性,秋月無邊,虧我思嬌情結,好比度日如年

) 只是—— 我抓了它那麼多用戶,是要幹嘛來著?

我 1天“偷了”知乎1000萬用戶,PHP果然是世界上最好的語言

本文由【php學習特邀群】提供

算了有了這些信息,我也可以做一些別人開頭閉口就亂吹一通的大數據分析拉~(不過好像還是閒的蛋疼) 最常見的當然是:

1、性別分佈

2、地域分佈

3、職業分佈

4、年齡分佈

看看人民大眾都在關注點什麼,社會、地理、政治有種眾生盡收眼底的感覺呀,還不錯嘛。 豁,我還可以這樣啊! 把頭像個拿來分析,用開源的驗黃程序,把色情的篩選出來,說不定可以拯救東莞水深火熱的人吶?

相關推薦

推薦中...