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服务器没打开,可以考虑重新打开

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/526544.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pip 指定镜像源 指定版本 批量安装

要用 pip 安装指定版本的 Python 包&#xff0c;只需通过 操作符 指定 例如&#xff1a;pip install pycrypto2.6.1 将安装pycrypto2.6.1 版本。 要使用pip 批量安装&#xff0c;需要写requirements.txt文件&#xff0c;一行一个包 numpy matplotlib wxpypip install -r r…

Linux命令行下统计当前文件夹下的文件个数

统计某文件夹下文件的个数 ls -l |grep “^-”|wc -l 统计某文件夹下目录的个数 ls -l |grep “^&#xff44;”|wc -l 统计文件夹下文件的个数&#xff0c;包括子文件夹里的。 ls -lR|grep “^-”|wc -l 统计文件夹下目录的个数&#xff0c;包括子文件夹里的。 ls -lR|…

proxy_pool开源项目攻克学习2:服务器架设

proxy_pool开源项目攻克学习2&#xff1a;服务器架设 在这个文章proxy_pool开源项目攻克学习中&#xff0c;我们完成了本地的proxy_pool架设。现在我们将他转移到服务器上。 硬件环境准备 腾讯centos服务器。 软件环境准备 redispython3.7proxy_pool开源项目 安装过程 总…

python opencv安装

opencv安装 pip install opencv-python依赖安装 # libglvnd-1:1.3.2-1.tl3.x86_64 # libglvnd-glx-1:1.3.2-1.tl3.x86_64 # libxshmfence-1.3-2.tl3.x86_64 # mesa-libGL-20.3.3-2.tl3.x86_64 # mesa-libglapi-20.3.3-2.tl3.x86_64yum install libGL

nodejs轻量服务器后端

nodejs轻量服务器后端 搭建思路 server.js主函数 mine.js配置文件 index.html 测试网页 目录结构 __./|__ test1|__ index.html|__ mine.js|__ server.jsserver.js文件 var PORT 8080; //端口 var DIR test1; //用于存放html的目录var http require(http);…

[Leetcode713]乘积小于 K 的子数组

公司里偷偷刷题记录 做一下笔记 求解子数组方式&#xff1a; 两种方案&#xff1a; 通用方案就是前缀和查找 另一种是递增序列可用的滑动窗口 有些题目如果给出来的数字有正&#xff0c;负。那么一定就要转化成前缀和。 如果是全正数组&#xff0c;可以采用前缀和二分查找的…

[Leetcode15]三数之和

重刷一遍相向双指针 题目 leetcode15 https://leetcode.cn/problems/3sum/ 类似的题目还有leetcode16 leetcode16 解答思路 关键点 快排 双指针 1&#xff1a; 快速排序&#xff0c;之后使用双指针遍历对应的位置&#xff0c;求解 2&#xff1a; 主要是在确定了第一个值…

光学元件生产工艺流程

光学元件生产工艺流程 选胚料 – 开料(初步切割)- 清洗 - 上盘(批处理) – 切割 – 粗磨整平 – 粗检 – 细磨上盘 – 细磨 – 高速抛光 – 低速抛光 – 光胶 – 成片 – 上盘 – 成品切割 – 清洗 – 包装 粗磨阶段 选胚料: 选择光学元件的原材料,如K9,BK7玻璃等 开…

[leetcode933]最近的请求次数

每日偷偷刷题933和队列有关 思路 每来一次ping就记录时间&#xff0c;并返回3000s内ping的次数&#xff0c;本题数据量很大&#xff0c;正向暴力肯定是不行的。 初步思路&#xff1a;反向暴力&#xff0c;不删列表数据。从ping的下标往前推&#xff0c;并统计3000s的数据。 …

[leetcode]5. 最长回文子串 647. 回文子串

昨日刷题&#xff0c;今日补发 解题思路 中间扩展&#xff0c;遍历数组&#xff0c;以每一项为中心&#xff0c;或以每两项为中心&#xff0c;向外拓展。 学习一下pair概念&#xff0c;还有string的substr的用法 以下是leetcode第五题 C做法 class Solution { public:pair…

牛客网选择题刷题记录之C++

数据结构 顺序表 在一个长度为n的顺序表的任意位置插入一个新元素的渐进时间复杂度为&#xff08;&#xff09; A. O&#xff08;n&#xff09; B. O&#xff08;n/2&#xff09; C. O&#xff08;1&#xff09; D. O&#xff08;n的平方&#xff09; 答案&#xff1a; A 解析…

[剑指offer 24] 反转链表

题目复习反转链表 字节面试的一道面试考题。属于简单题&#xff0c;毕竟复杂的面试也不好判题对吧&#xff08;狗头&#xff09; 思路 思路不难&#xff0c;首先我们观察链表&#xff0c;一般链表指的都是单向链表 struct ListNode {int val;struct ListNode *next; };那么…

[剑指offer 27][LeetCode234] 回文链表

偷偷刷题记录 回文链表 思路 思路1. 处理链表最粗暴的方式就是拷贝到数组中。考试时候也是&#xff0c;只要不会超内存&#xff0c;完全这么办 思路2. 快慢指针。因为我们判断是不是回文链表&#xff0c;回文的特性就是以中为界&#xff0c;两头对称。由于我们不能像使用数组…

牛客网选择题刷题记录之Linux系统

linux运维 linux指令 下面有关linux查看系统负载的命令&#xff0c;说法错误的是&#xff1f; A. uptime命令主要用于获取主机运行时间和查询linux系统负载等信息 B. vmstat命令可以查看查看cpu负载 C. sar -n命令可以查看网络接口信息 D. free命令可以查看磁盘负载情况 答案&…

Keil_uvision_4基本使用教程

前言&#xff1a; keil uvision 5 和 4 使用方式差不多 Keil_uvision_4基本使用教程 Keil C51 V9.00 即09年发布的最新版本uVision 4&#xff0c;版本外观改变比较大 可以使用以前的注册文件如果全新安装&#xff0c;在VISTA或者WIN 7系统下…

MySQL语法看这一篇就够啦

MySQL语法看这一篇就够啦1. MySQL介绍与登录1.1 MySQL介绍1.2 Mariadb安装与启动1.2.1 在centos7环境下安装启动登录数据库操作部分增删改查&#xff1a;增 CREATE DATABASE增删改查&#xff1a;删 DROP增删改查&#xff1a;查找数据库 SHOW DATABASE使用数据库&#xff1a;use…

Python数据库:嵌入式MySQL

Python数据库&#xff1a;嵌入式MySQLPython访问MySQL的库函数PyMySQL安装PyMySQL快速上手以及代码上下文PyMySQL常见语法1. 导包2.连接数据库 connect3. 创建访问对象 cursor4. 下达命令 cursor.execute5. 接收结果 cursor.fetch*6.事务的用法7. 关闭mysql链接 closePython访问…

部门名称部门结构叠用_金属结构分公司三部门联合开展工会小组活动

为丰富职工的业余生活&#xff0c;营造轻松欢乐的氛围&#xff0c;增强部门间交流沟通&#xff0c;舒缓职工工作压力&#xff0c;在金属结构分公司工会的支持下&#xff0c;9月12日&#xff0c;分公司工程管理部、安全监管部和综合办公室联合开展工会小组活动&#xff0c;分公司…

linux环境下安装Java运行Java

Linux环境下安装与运行Java一. Linux环境下安装Java环境——最最最简单粗暴的教程二. Linux下编译Java代码---javac和java命令的使用2.1 编译单个java文件2.2 编译多个Java文件&#xff0c;每个类都在一个包中2.3 不同包编译一. Linux环境下安装Java环境——最最最简单粗暴的教…

不是区块链的特征_上市公司日照港物流区块链平台上线,不是谁都能玩“区块链+物流”?...

免责声明&#xff1a;本文旨在传递更多市场信息&#xff0c;不构成任何投资建议。文章仅代表作者观点&#xff0c;不代表火星财经官方立场。小编&#xff1a;记得关注哦投资区块链&#xff0c;猛戳&#xff1a;火星财经App下载来源&#xff1a;火星一线文 | 成文厚火星财经APP(…