利用Python爬取幾百萬github數據!這些源碼都是我的囊中之物!


利用Python爬取幾百萬github數據!這些源碼都是我的囊中之物!


利用Python爬取幾百萬github數據!這些源碼都是我的囊中之物!


利用Python爬取幾百萬github數據!這些源碼都是我的囊中之物!


私信小編007即可獲取數十套PDF哦!

看到這麼簡單的流程,內心的第一想法就是先簡單的寫一個遞歸實現唄,要是性能差再慢慢優化,所以第一版代碼很快就完成了(在目錄recursion下)。數據存儲使用mongo,重複請求判斷使用的redis,寫mongo數據採用celery的異步調用,需要rabbitmq服務正常啓動,在settings.py正確配置後,使用下面的步驟啓動:

利用Python爬取幾百萬github數據!這些源碼都是我的囊中之物!


利用Python爬取幾百萬github數據!這些源碼都是我的囊中之物!


這是按粉絲數降序排列的用戶列表

利用Python爬取幾百萬github數據!這些源碼都是我的囊中之物!


運行缺陷

作爲一個有追求的程序員,當然不能因爲一點小成就滿足,總結一下遞歸實現的幾個缺陷:

利用Python爬取幾百萬github數據!這些源碼都是我的囊中之物!


異步優化

針對這種I/O耗時的問題,解決方法也就那幾種,要麼多併發,要麼走異步訪問,要麼雙管齊下。針對上面的問題2,我最開始的解決方式是異步請求API。因爲最開始寫代碼的時候考慮到了這點,代碼對調用方法已經做過優化,很快就改好了,實現方式使用了grequests。這個庫和requests是同一個作者,代碼也非常的簡單,就是講request請求用gevent做了一個簡單的封裝,可以非阻塞的請求數據。

利用Python爬取幾百萬github數據!這些源碼都是我的囊中之物!


利用Python爬取幾百萬github數據!這些源碼都是我的囊中之物!


運行程序

爲了實現多級部署(雖然我就只有一臺機器),消息隊列使用了rabbitmq,需要創建名爲github,類型是direct的exchange,然後創建四個名稱分別爲user, repo, follower, following的隊列,詳細的綁定關係見下圖:

利用Python爬取幾百萬github數據!這些源碼都是我的囊中之物!


利用Python爬取幾百萬github數據!這些源碼都是我的囊中之物!


利用Python爬取幾百萬github數據!這些源碼都是我的囊中之物!


嘿嘿 還是挺好玩的。如果對你有幫助,評論666.謝謝大家閱讀!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章