python 構(gòu)建代理池1.0版

代理池

三天小長假, 朋友圈都被刷屏了,各種的照片,景色。真是不孬。

我不笑

一直以來都想做一個代理池,但是一直都沒有時間(其實是懶)。不過趁著這個小假期,終于搞出來了,實現(xiàn)了設想的基本功能,其他的功能后面再完善。
代碼已經(jīng)上傳GitHub : https://github.com/topyuluo/IPProxyPool

下面詳述:

自動攜帶避雷針

環(huán)境

windows(64) + python 2.7 + MongoDB + phantomjs + selenium + requests

設計思想

  • 采集 :周期性的從網(wǎng)絡上采集免費的ip, 放入數(shù)據(jù)庫中并啟動10個進程,進行驗證 ,驗證成功單獨存放。
  • 使用: 初步想了兩種方式,一種是做成服務,提供api 接口,一種是直連數(shù)據(jù)庫。
設計

ip代理池程序由四部分組成:

  • Schedule : 執(zhí)行定時任務,每10分鐘請求一下ip數(shù)據(jù)源,并驗證ip可用性
  • db : 存儲數(shù)據(jù),數(shù)據(jù)從網(wǎng)絡上取下來,必定要找一個地方存儲,也好維護
  • collectproxy : ip數(shù)據(jù)源, 由快代理,代理66 ,有代理, 西刺代理,代理360 組成。可擴展
  • utils : 工具函數(shù)(Http請求 ,驗證函數(shù))。
  • webservice: 提供外部訪問接口。
框架圖
框架.png
流程概述

啟動Schedule, 由Scheduler調(diào)用collectProxy,去請求網(wǎng)絡資源,collectProxy拿到數(shù)據(jù)后解析,并將解析好的數(shù)據(jù)返回給scheduler,數(shù)據(jù)入庫,sheduler 驗證數(shù)據(jù)庫中已經(jīng)存在的proxy, 驗證成功,放入新表中。 此為周期性任務。
需要接入代理的爬蟲,通過訪問數(shù)據(jù)庫或者api接口拿代理,如果此時可用代理數(shù)量不足,調(diào)用下載程序去網(wǎng)絡采集新的數(shù)據(jù)。如果爬蟲通過proxy沒有成功請求到數(shù)據(jù),此ip廢棄,從驗證成功庫中刪除,并請求一個新的proxy。考慮了一下,可能做成API的方式擴展性更好一些,直接調(diào)用網(wǎng)址就可以了,通用性更強。

項目目錄

目錄.png
目錄接口說明
  • ProxyRefreshSchedule : 調(diào)度任務,周期性執(zhí)行數(shù)據(jù)源刷新,代理驗證,并入庫操作。
  • CollectFreeProxy:封裝網(wǎng)絡數(shù)據(jù)源,調(diào)用工具函數(shù)下載接口,解析數(shù)據(jù),將數(shù)據(jù)傳給任務調(diào)度器。
  • MongoDBClient : 數(shù)據(jù)庫操作類,封裝了,查詢,刪除,保存等接口
    -UtilsFunction :工具函數(shù),數(shù)據(jù)下載接口,ip驗證接口。
    -Api : 數(shù)據(jù)服務接口,封裝返回單個proxy,返回多個proxy,查詢數(shù)據(jù)總量等接口
程序效果

調(diào)度任務執(zhí)行效果:

調(diào)度任務運行效果.png

數(shù)據(jù)庫截圖

*所有ip庫 *

Paste_Image.png

已驗證ip庫

Paste_Image.png

api截圖

Paste_Image.png

使用說明:

  • 先運行ProxyRefreshSchedule ,等待10 分鐘,設定的周期就是10分鐘,感覺不合適可以自己修改。之后控制臺會打印下載鏈接和已經(jīng)驗證成功的proxy。
  • 運行 api.py 。
  • 打開瀏覽器,輸入http://127.0.0.1:5000 ??梢圆榭唇涌诘腶pi。


少年聽雨歌樓上,紅燭昏羅帳。  
壯年聽雨客舟中,江闊云低,斷雁叫西風。
感謝支持!
                                        ---起個名忒難

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容