[开源] 基于 Tornado 和 Scrapy 的高性能代理池

2018-06-20 19:15:58 +08:00
 kmz

花一周的时间初步完成了这个项目…… Github 上好像没有几个(我只找到了一个= =)把 Tornado 和 Scrapy 结合到一起的项目

支持的特性包括:

项目地址: https://github.com/Karmenzind/fp-server

关于代理可用性

爬虫爬取代理时会先检测可用性(包括速度和匿名性),检测完毕后才会入库,不可用的直接抛弃,所以可以安心使用。至于代理性能,我后面会对检测方式进行优化。

关于可存储代理数目

我暂时没有做限制,写这个文章的时候,我本地有一万个活动(可用的)代理。我没有继续爬,因为目前代理来源只有四个,潜力有限。假如有人用的话,后面我会持续增加代理来源。

在 Scrapy 项目中使用

我写了一个可以直接用在 Scrapy 项目里的 middleware。后面有空我会写更多示例代码。

环境要求

项目是在 Archlinux 上开发的,已经测试通过的环境如下:

代码暂时不支持直接在 Windows 上运行,我已經打包好了 Docker 镜像,Windows 用户可以使用 Docker 部署。

推荐 Unix/Linux 用户也使用 Docker 部署,这样是最简单的。

更详细的介绍和使用方法见项目 README

欢迎提 Bug 和意见给我。

3367 次点击
所在节点    分享创造
21 条回复
chroming
2018-06-20 19:21:11 +08:00
为啥用 tornado 做 server, tornado 相比 sanic 有什么优势吗?
golmic
2018-06-20 19:24:20 +08:00
这里有我群里大家贡献的近 20 个代理网站的解析,也是 scrapy 写的

https://github.com/lujqme/proxy_pool
kmz
2018-06-20 19:25:04 +08:00
@chroming 额,,,优势是我用过,,,我去了解一下你说的 sanic
kmz
2018-06-20 19:26:17 +08:00
@golmic 我这个不只是爬虫,还是个 web 服务,爬取和更新都是完全自动的
谢谢你发这个,收藏了~
golmic
2018-06-20 19:31:01 +08:00
@kmz 我看你说代理来源有限,就给你贡献一下..哈哈,你可以抓下来之后用你的项目处理或者结合一下
kmz
2018-06-20 19:36:31 +08:00
@golmic 恩恩感谢~~
kingname
2018-06-20 19:44:48 +08:00
大家可以看看 https://github.com/imWildCat/scylla
比楼主这个好用的多。
chroming
2018-06-20 19:52:31 +08:00
@kmz #3 我也只是简单用了下 tornado 和 sanic, 发现 sanic 的接口友好得多
kmz
2018-06-20 19:54:04 +08:00
@kingname
哈哈哈,我刚写了一个星期,支持一下嘛
你发的这个 commits 数量都是我这个的二十倍了……
kmz
2018-06-20 19:57:39 +08:00
@chroming 恩恩
kingname
2018-06-20 20:08:50 +08:00
@kmz 这种到处抓免费代理的代理池,可用率不超过 30%。还是自己搭建比较好。
kmz
2018-06-20 20:11:16 +08:00
@kingname
我这个服务抓下来代理之后,会基于你的本地网络进行检测
检测通过后才入库的,所以抓下来的基本都是可用的 = =
glacer
2018-06-20 20:12:58 +08:00
网上抓的免费代理可用率和速度都感人... 不管是公司的活还是自用我都愿意花钱买,至少质量比免费的高不止一档了。
kmz
2018-06-20 20:25:57 +08:00
@glacer 嗯嗯,对速度有要求,肯定专业代理好一点,,,
我后面会多增加爬取源,提升检测门槛,尽可能提高代理质量,,,
songjiaxin2008
2018-06-20 20:26:31 +08:00
asyncio 和 tornato 一起使用是不是很酸爽...
kmz
2018-06-20 20:31:16 +08:00
@songjiaxin2008 还好,,,基本上没用到 asyncio,,,
和 twisted 结合才酸爽,写的过程碰到了 bug,twisted 一直阻塞,差点就放弃了……现在的解决方法还是曲线救国 = =
kingname
2018-06-20 21:10:26 +08:00
@kmz 你会发现你刚刚检查可用,1 秒钟以后就失效了。
kmz
2018-06-20 21:13:09 +08:00
@kingname 好的亲
kmz
2018-06-22 17:02:46 +08:00
改了几个比较大的 bug,,,代码现在比发这个文章的时候靠谱得多了,,,(扶额
xiaozizayang
2018-06-24 11:37:32 +08:00
我基于 sanic 写了个: https://github.com/howie6879/hproxy 异步

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/464495

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX