东莞网站设计教程,做网站需要了解的知识,做电容的网站,烟台企业展厅设计公司开源项目攻克学习之proxy_pool
1. 学习背景
爬虫线程池#xff0c;但是网络上付费的又很麻烦#xff0c;于是在开源网站上找到一个版本进行学习。
https://github.com/jhao104/proxy_pool
本人操作系统deepin#xff0c;有遇到一些问题#xff0c;希望可以跟大家分享一…开源项目攻克学习之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 123456127.0.0.1:6379 auth 123456127.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://:pwd127.0.0.1:8888/0# 配置 ProxyFetcherPROXY_FETCHER [freeProxy01, # 这里是启用的代理抓取方法名所有fetch方法位于fetcher/proxyFetcher.pyfreeProxy02,# ....
]step6. 启动程序 第二次解决问题
# 启动调度程序
python proxyPool.py schedule# 启动webApi服务
python proxyPool.py server第一个schedule能正常执行了但是执行server时候报错错误内容如下
Traceback (most recent call last):File proxyPool.py, line 43, in modulecli()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 modulefrom flask import Flask, jsonify, requestFile /home/rodney/.local/lib/python3.7/site-packages/flask/__init__.py, line 21, in modulefrom .app import Flask, Request, ResponseFile /home/rodney/.local/lib/python3.7/site-packages/flask/app.py, line 25, in modulefrom . import cli, jsonFile /home/rodney/.local/lib/python3.7/site-packages/flask/json/__init__.py, line 21, in modulefrom 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 Flask2.0最终的执行结果如下 step7. 其他的错误以及debug
如果出现如下错误请重启redis服务器。
$ redis-server3.总结安装Proxy_pool的顺序过程
1. 准备环境
python环境 - step2redis服务器 - step4
2. 下载安装开源代码 下载开源代码 - step1 安装开源代码的依赖 - step3 配置setting - step5
3. 启动proxy_pool
根据启动命令启动代理池服务 python proxyPool.py server
4. 问题定位
遇到Flask包导包问题可以考虑重装Flask版本遇到连接失败connection error通常是redis服务器没打开可以考虑重新打开