python - 如何为爬虫构建代理池
巴扎黑
巴扎黑 2017-04-18 09:06:55
0
3
765

为了避免爬虫被封 IP ,网上搜索教程说需要建立代理池。但是付费代理都好贵。。。不过好在网上已经有不少免费提供代理的网站了。因此,我打算写个爬虫去获取这些免费 IP ~

策略步骤

  1. 用种子关键词例如“代理 IP ”在各个搜索引擎上搜索,获取候选 URL

  2. 爬取候选 URL ,将代理地址储存下来

  3. 验证代理地址,将可用的代理地址放入代理池

难点

  1. 如何去验证维护这些代理地址

  2. 如何知道哪些代理地址适合哪些网站(可用性,响应时间)

  3. 效率问题(之前写过简单的验证脚本,但是效率非常低)

小伙伴们有不有什么好的办法能解决这些问题呢?

巴扎黑
巴扎黑

全部回覆(3)
刘奇

大概寫下吧,剛好之前做過一樣的工作,當時也是需要代理,然後自己寫了爬蟲做自動獲取和自動更新。

代理地址的話我沒有去讓爬蟲自己選網站,而是人工篩選了幾個提供免費代理的網站然後分別寫了一些爬蟲去爬不同的代理網站;

針對你說的困難點:

  1. 驗證的話初次爬到的地址會直接先驗證是否可用,能用再存入數據庫或持久化;因為代理的不可靠性,需要定時檢查抓到的代理是否可用,我是直接在uWSGI 伺服器起了一個計時任務,每半小時會檢查一次,每一小時會抓一次新的代理,當然你也可以用crontab 之類的定時任務做;

  2. 直接用抓到的代理商訪問需要訪問的網站,如果需要針對不同網站提供不同代理可以驗證後把相關驗證資訊一起儲存;

  3. 效率問題好處理,網絡驗證操作都是 i/o 密集型任務,用協程、多線程、多進程都可以解決,python 的 gil 不影響多線程提高 i/o 密集型任務的效率

multithreading-spider之前我用多執行緒+ queue 做的一個簡單的代理爬蟲,src 的demo 裡是具體例子,使用了簡單的生產者消費者模型,爬到代理地址的爬蟲當做生產者,驗證代理可用性的爬蟲當做消費者,可以顯示具體任務進度。

洪涛

可以試試這個,基於Python的代理池。
自動抓取網路上的代理資源,並且方便擴充。
https://github.com/WiseDoge/P...

左手右手慢动作

你可以看看這個專案:https://github.com/jhao104/pr...

開源的代理池服務

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!