关键字: 代理池
Redis
Flask
前言
我们今天跟着 《Python3网络爬虫开发实战》这本书来搭建自己的代理池。
代理池工作后,我拥有了接近八百个代理,评分一百的代理也有上百个。
代理池结构功能
代理池中的 py
文件功能:
基本框架:
为什么是 Redis?
Redis 是一个开源的(BSD许可)内存数据结构存储,用作数据库,缓存和消息代理。它支持数据结构,如字符串,散列,列表,集合,或者在排序集中获得排名最高的成员。
Redis 和其他数据库最显著的区别在于 Redis 是一个基于内存的高性能 key-value 数据库。
在 Redis 的使用场景中,我们可以根据需求,对我们爬取的代理进行评分计数,也可以用 Redis 抽取出评分最高的代理。
请在运行代码前,根据有关教程安装配置好 Redis。
为什么是 Flask
Flask 是一个 Python 实现的 Web 开发微框架。
当我们在 IDE 中运行我们的代理池时,在浏览器中输入 127.0.0.1:5555
,可以进入 Flask 为我们建立起的网页:
再跟上 /random
,随机抽取一个代理(默认最高分抽取):
换成 /count
可以显示我们目前代理数量:
由于我在编辑时,代理池还在运行,所以数量来到了一千个。
我们也可以通过调用 Flask 提供的 API 来获取我们需要的代理,前提是代理池在运行:
import requests
PROXY_POOL_URL = 'http://localhost:5555/random'
def get_proxy():
try:
response = requests.get(PROXY_POOL_URL)
if response.status_code == 200:
return response.text
except ConnectionError:
return None
源码
由于这次代码太多,我就不讲解和贴出来了,源码同步在我的 GitHub 上。
感兴趣的同学可以一起交流。
总之,当程序跑起来的时候,源源不断的代理就跑进你的数据库了:
最后
欢迎关注我的公众号 “爬虫小栈”。