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


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


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


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


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

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

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


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


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

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


運行缺陷web

做爲一個有追求的程序員,固然不能由於一點小成就知足,總結一下遞歸實現的幾個缺陷:redis

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


異步優化併發

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

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


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


運行程序ide

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

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


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


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


嘿嘿 仍是挺好玩的。若是對你有幫助,評論666.謝謝你們閱讀!優化

相關文章
相關標籤/搜索