proxypool package

Submodules

proxypool.api module

http://127.0.0.1:5000/进入主页。 访问 http://127.0.0.1:5000/get 从代理池中获取一个代理。 访问 http://127.0.0.1:5000/count 获取代理池中可用代理的总数。

Author: Liu Date: 2016/12/9


proxypool.db module

的交互。

Author: Liu Date: 2016/12/9


class proxypool.db.RedisClient(host='localhost', port=6379)[source]

Bases: object

Redis数据库操作类。

flush()[source]

刷新Redis中的全部内容,测试用。

get(count=1)[source]

从Pool中获取一定量数据。

pop()[source]

弹出一个可用代理。

put(proxy)[source]

将代理压入Pool中。 用Redis的set容器来负责去重,如果proxy能被压入proxy_set, 就将其放入proxy pool中,否则不压入。

put_many(proxies)[source]

将一定量的代理压入Pool。

queue_len

获取proxy pool的大小。

proxypool.error module

Author: Liu Date: 2016/12/9

exception proxypool.error.PoolEmptyError[source]

Bases: Exception

代理池空异常,如果代理池长时间为空,则抛出此异常。

exception proxypool.error.ResourceDepletionError[source]

Bases: Exception

资源枯竭异常,如果从所有抓取网站都抓不到可用的代理资源, 则抛出此异常。

proxypool.proxyGetter module

Author: Liu Date: 2016/12/9

class proxypool.proxyGetter.FreeProxyGetter[source]

Bases: object

代理爬虫,负责扫描各大代理网站,抓取代理。 该类有可扩展性,可根据需要自己添加新站点的代理抓取函数, 但是函数名必须以crawl_开头,返回值必须以”host:port”的形式返回, 添加器会自动识别并调用此类函数。

crawl_daili66(page_count=4)[source]

抓取代理66网的数据。

crawl_kuaidaili(page_count=8)[source]

抓取快代理网的数据

crawl_proxy360()[source]

抓取proxy360网的数据。

crawl_xici()[source]

抓取xici代理网的数据。

get_raw_proxies(callback, count=40)[source]
class proxypool.proxyGetter.ProxyMetaclass[source]

Bases: type

爬虫的元类,在FreeProxyGetter类中加入 __CrawlFunc__和__CrawlFuncCount__ 两个参数,分别表示爬虫函数,和爬虫函数的数量。

proxypool.schedule module

包含ValidityTester,PoolAdder, Schedule三个类,负责维护代理池。

Author: Liu Date: 2016/12/9


class proxypool.schedule.PoolAdder(threshold)[source]

Bases: object

添加器,负责向池中补充代理

add_to_queue(flag=40)[source]

命令爬虫抓取一定量未检测的代理,然后检测,将通过检测的代理 加入到代理池中。

is_over_threshold()[source]

判断代理池中的数据量是否达到阈值。

class proxypool.schedule.Schedule[source]

Bases: object

总调度器,用于协调各调度器模块

static check_pool(lower_threshold=10, upper_threshold=40, cycle=20)[source]

协调添加器,当代理池中可用代理的数量低于下阈值时,触发添加器,启动爬虫 补充代理,当代理达到上阈值时,添加器停止工作。

run()[source]

运行调度器,创建两个进程,对代理池进行维护。

static valid_proxy(cycle=600)[source]

对已经如池的代理进行检测,防止池中的代理因长期 不使用而过期。 抽出代理池队列中前1/4的代理,检测,合格者压入队列尾。

class proxypool.schedule.ValidityTester[source]

Bases: object

检验器,负责对未知的代理进行异步检测。

get_usable_proxies()[source]
set_raw_proxies(proxies)[source]

设置待检测的代理。

test()[source]

异步检测_raw_proxies中的全部代理。

test_api = 'https://www.baidu.com'
test_single_proxy(proxy)[source]

检测单个代理,如果可用,则将其加入_usable_proxies

proxypool.setting module

Author: Liu Date: 2016/12/9

proxypool.utils module

class proxypool.utils.Downloader(urls)[source]

Bases: object

一个异步下载器,可以对代理源异步抓取,但是容易被BAN。

download()[source]
download_single_page(url)[source]
htmls
proxypool.utils.get_page(url)[source]

Module contents