日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

proxy_pool开源项目攻克学习

發布時間:2024/9/27 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 pong

step5. 修改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-server


3.總結安裝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开源项目攻克学习的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。