開源一個爬蟲代理框架:IPProxyTool

epimetheus 7年前發布 | 43K 次閱讀 代理 Python 爬蟲 網絡爬蟲

使用 scrapy 爬蟲抓取代理網站,獲取大量的免費代理 ip。過濾出所有可用的 ip,存入數據庫以備使用。

運行環境

python 2.7.12

運行依賴包

  • scrapy
  • BeautifulSoup
  • requests
  • mysql-connector-python
  • web.py
  • scrapydo
  • lxml

Mysql 配置

  • 安裝 Mysql 并啟動
  • 安裝 mysql-connector-python 安裝參考
  • 在 config.py 更改數據庫配置
        database_config = {
            'host': 'localhost',
            'port': 3306,
            'user': 'root',
            'password': '123456',
        }

下載使用

將項目克隆到本地

$ git clone https://github.com/awolfly9/IPProxyTool.git

進入工程目錄

$ cd IPProxyTool

分別運行代理抓取、驗證、服務器 腳本

$ python runspider.py 
$ python runvalidator.py 
$ python runserver.py

項目說明

抓取代理網站

所有抓取代理網站的代碼都在 proxy

擴展抓取其他的代理網站

1.在 proxy 目錄下新建腳本并繼承自 BaseSpider 
2.設置 name、urls、headers
3.重寫 parse_page 方法,提取代理數據
4.將數據存入數據庫 具體可以參考 ip181 kuaidaili
5.如果需要抓取特別復雜的代理網站,可以參考peuland

修改 runspider.py 導入抓取庫,添加到抓取隊列

運行 runspider.py 腳本開始抓取代理網站

$ python runspider.py

驗證代理 ip 是否有效

目前驗證方式:利用將抓取到的代理 ip 設置成 scrapy 請求的代理,然后去請求目標網站,如果目標網站在合適的時間內成功返回,那么這個則認為這個代理 ip 有效。如果沒有在合適的時間返回成功的數據,則認為這個代理 ip 無效。
一個目標網站對應一個腳本,所有驗證代理 ip 的代碼都在 validator

擴展驗證其他網站

1.在 validator 目錄下新建腳本并繼承 Validator 
2.設置 name、timeout、urls、headers 
3.然后調用 init 方法 
4.如果需要特別復雜的驗證方式,可以參考 assetstore

修改runvalidator.py 導入驗證庫,添加到驗證隊列

運行 runvalidator.py 腳本開始抓取代理網站

$ python runvalidator.py

獲取代理 ip 數據服務器

在 config.py 中修改啟動服務器端口配置 data_port,默認為 8000 啟動服務器

$ python runserver.py

服務器提供接口

獲取

http://127.0.0.1:8000/select?name=douban

參數

Name Type Description
name str 數據庫名稱

刪除

http://127.0.0.1:8000/delete?name=free_ipproxy&ip=27.197.144.181

參數

Name Type Description
name str 數據庫名稱
ip str 需要刪除的 ip

插入

http://127.0.0.1:8000/insert?name=douban&ip=555.22.22.55&port=335&country=%E4%B8%AD%E5%9B%BD&anonymity=1&https=yes&speed=5&source=100

參數

Name Type Description 是否必須
name str 數據庫名稱
ip str ip 地址
port str 端口
country str 國家
anonymity int 1:高匿,2:匿名,3:透明
https str yes:https,no:http
speed float 訪問速度
source str ip 來源

TODO

  • 添加服務器獲取接口更多篩選條件
  • 添加 https 支持
  • 添加檢測 ip 的匿名度
  • 添加抓取更多免費代理網站
  • 分布式部署項目

參考

 本文由用戶 epimetheus 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!