proxy_pool开源项目攻克学习
開源項目攻克學習之proxy_pool
1. 學習背景
爬蟲線程池,但是網絡上付費的又很麻煩,于是在開源網站上找到一個版本進行學習。
https://github.com/jhao104/proxy_pool
本人操作系統deepin,有遇到一些問題,希望可以跟大家分享一下。
2. 學習路程是我個人安裝時候踩的坑。
3. 總結安裝可以參考總結安裝的順序進行安裝。
2. 學習路程
step1. 下載
首先是進行代碼下載,沒啥好說的
git clone https://github.com/jhao104/proxy_pool.git如果下載速度慢的話,作者還給了release源碼下載,源碼地址如下,下載zip或者tar.gz格式都可以。
https://github.com/jhao104/proxy_pool/releases/tag/2.4.0
step2. 準備python環境
有兩種方法:
-
一種是準備單獨的python環境
-
另一種是配置虛擬機
準備一個單獨的python環境,我沒用虛擬機,而是基于我原來的一個教程,重新build了一個python版本。
環境準備如下linux環境下安裝多個任意版本的python環境
我準備的環境是python3.7.11
~/proxy_pool-2.4.0$ python3711 Python 3.7.11 (default, Aug 26 2021, 02:56:09) [GCC 6.3.0 20170516] on linux Type "help", "copyright", "credits" or "license" for more information. >>>step3. 根據教程安裝依賴
~/proxy_pool-2.4.0$ pip3711 install -r requirement -i https://pypi.tuna.tsinghua.edu.cn/simple/等待安裝完成有一些告警,但我不知道有什么影響。
WARNING: The script flask is installed in '/home/rodney/.local/bin' which is not on PATH.Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.WARNING: The script chardetect is installed in '/home/rodney/.local/bin' which is not on PATH.Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.WARNING: The scripts gunicorn and gunicorn_paster are installed in '/home/rodney/.local/bin' which is not on PATH.Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.step4. 開始啟動程序 + 解決報錯問題:安裝redis
# 啟動調度程序 python proxyPool.py schedule# 啟動webApi服務 python proxyPool.py server發現報錯了,說是這個問題
redis.exceptions.ConnectionError: Error 111 connecting to 172.16.8.128:6379. Connection refused.上網查詢了一下是沒有安裝redis的問題(原來requirement.txt的只是個接口。。。)解決思路就兩行。。。
然后去查找了一下redis的安裝方法
因為我是deepin系統,和ubuntu類似,直接用apt-get安裝即可(下次在服務器上安裝時候再研究centos的)
sudo apt-get install redis安裝完成后,他的配置文件在如下位置,我們可以打開看下,但不用修改。
/etc/redis/redis.conf利用apt-get安裝后,可以直接用命令啟動redis服務器,第一次進去需要設置密碼,否則不能用。
參考資料:
NOAUTH Authentication required 解決辦法
redis遠程訪問
Python連接redis
# 啟動redis服務器 $ redis-server# 給他配置密碼 redis-cli 127.0.0.1:6379> set key pwd127.0.0.1:6379> get key127.0.0.1:6379> config set requirepass "123456"127.0.0.1:6379> auth "123456"127.0.0.1:6379> ping pongstep5. 修改setting.py
然后繼續按教程走,
HOST 不用改,PORT也可以不用改,這是你flask打開的默認地址,
數據庫需要改一下,pwd改成你剛才設置的"123456"或者你自己設置的值。
端口改成6379。因為我們沒有改redis-server的地址。
其他的不用動。然后再啟動python腳本。
# setting.py 為項目配置文件# 配置API服務HOST = "0.0.0.0" # IP PORT = 5000 # 監聽端口# 配置數據庫DB_CONN = 'redis://:pwd@127.0.0.1:8888/0'# 配置 ProxyFetcherPROXY_FETCHER = ["freeProxy01", # 這里是啟用的代理抓取方法名,所有fetch方法位于fetcher/proxyFetcher.py"freeProxy02",# .... ]step6. 啟動程序 + 第二次解決問題
# 啟動調度程序 python proxyPool.py schedule# 啟動webApi服務 python proxyPool.py server第一個schedule能正常執行了,但是執行server時候報錯,錯誤內容如下:
Traceback (most recent call last):File "proxyPool.py", line 43, in <module>cli()File "/home/rodney/.local/lib/python3.7/site-packages/click/core.py", line 764, in __call__return self.main(*args, **kwargs)File "/home/rodney/.local/lib/python3.7/site-packages/click/core.py", line 717, in mainrv = self.invoke(ctx)File "/home/rodney/.local/lib/python3.7/site-packages/click/core.py", line 1137, in invokereturn _process_result(sub_ctx.command.invoke(sub_ctx))File "/home/rodney/.local/lib/python3.7/site-packages/click/core.py", line 956, in invokereturn ctx.invoke(self.callback, **ctx.params)File "/home/rodney/.local/lib/python3.7/site-packages/click/core.py", line 555, in invokereturn callback(*args, **kwargs)File "proxyPool.py", line 39, in serverstartServer()File "/home/rodney/Open_Source/py_github/proxy_pool_dl/proxy_pool-2.4.0/helper/launcher.py", line 25, in startServerfrom api.proxyApi import runFlaskFile "/home/rodney/Open_Source/py_github/proxy_pool_dl/proxy_pool-2.4.0/api/proxyApi.py", line 20, in <module>from flask import Flask, jsonify, requestFile "/home/rodney/.local/lib/python3.7/site-packages/flask/__init__.py", line 21, in <module>from .app import Flask, Request, ResponseFile "/home/rodney/.local/lib/python3.7/site-packages/flask/app.py", line 25, in <module>from . import cli, jsonFile "/home/rodney/.local/lib/python3.7/site-packages/flask/json/__init__.py", line 21, in <module>from itsdangerous import json as _json ImportError: cannot import name 'json' from 'itsdangerous' (/home/rodney/.local/lib/python3.7/site-packages/itsdangerous/__init__.py)研究一下啊發現應該是flask庫內部導包出現問題。因為webapi依賴flask,而調度程序不依賴flask
這里我嘗試將flask的庫從1.0.0改為2.0.0解決問題
$ pip3711 install Flask==2.0最終的執行結果如下:
step7. 其他的錯誤以及debug
如果出現如下錯誤,請重啟redis服務器。
$ redis-server3.總結安裝Proxy_pool的順序過程
1. 準備環境
- python環境 -> step2
- redis服務器 -> step4
2. 下載安裝開源代碼
-
下載開源代碼 -> step1
-
安裝開源代碼的依賴 -> step3
-
配置setting -> step5
3. 啟動proxy_pool
- 根據啟動命令啟動代理池服務 python proxyPool.py server
4. 問題定位
- 遇到Flask包導包問題可以考慮重裝Flask版本
- 遇到連接失敗connection error通常是redis服務器沒打開,可以考慮重新打開
總結
以上是生活随笔為你收集整理的proxy_pool开源项目攻克学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html 列表点,HTML列表
- 下一篇: php中带?错误,参考-此错误在PHP中