花一周的时间初步完成了这个项目…… Github 上好像没有几个(我只找到了一个= =)把 Tornado 和 Scrapy 结合到一起的项目
支持的特性包括:
- 设定数目,持续从网上爬取新的免费代理,检测可用后存入本地数据库
- 完全异步,支持高并发(从免费的基础上去衡量……)
- 通过调用 HTTP API 来获取代理,后面有时间会增加前端控制页面
- 周期性自检,更新可用代理
项目地址: https://github.com/Karmenzind/fp-server
关于代理可用性
爬虫爬取代理时会先检测可用性(包括速度和匿名性),检测完毕后才会入库,不可用的直接抛弃,所以可以安心使用。至于代理性能,我后面会对检测方式进行优化。
关于可存储代理数目
我暂时没有做限制,写这个文章的时候,我本地有一万个活动(可用的)代理。我没有继续爬,因为目前代理来源只有四个,潜力有限。假如有人用的话,后面我会持续增加代理来源。
在 Scrapy 项目中使用
我写了一个可以直接用在 Scrapy 项目里的 middleware。后面有空我会写更多示例代码。
环境要求
项目是在 Archlinux 上开发的,已经测试通过的环境如下:
- Archlinux; Python-3.6.5
- Debian(wsl); Python-3.5.3
- macOS 10; Python-3.6.5
代码暂时不支持直接在 Windows 上运行,我已經打包好了 Docker 镜像,Windows 用户可以使用 Docker 部署。
推荐 Unix/Linux 用户也使用 Docker 部署,这样是最简单的。
更详细的介绍和使用方法见项目 README。
欢迎提 Bug 和意见给我。