做网络爬虫,python 的多线程,异步和 node.js 的异步哪个好?

2014-02-12 09:36:16 +08:00
 pc10201
准备研究一下网络爬虫
自己做过测试,在局域网环境中python的多线程要比gevent要快一点

有没有高手来对比一下下面的各项?
python的多线程
python中的Tornado的异步http
nodejs的异步

另外多线程可能与异步结合在一起么?
感觉采集中最耗时的就是网络IO,数据抽取分析什么的倒是挺快
13834 次点击
所在节点    Python
30 条回复
allenwei
2014-02-12 15:09:51 +08:00
@wangfengmadking 赞同,代理才是爬虫的最大瓶颈,还没到遇到瓶颈的并发量也许那个网站就扛不住了,一般能扛得住的都有反爬虫机制
simpx
2014-02-12 15:38:30 +08:00
@wangfengmadking 哈哈,是的。我的方案是建立在众多不稳定的代理之上的。需要动态监测、删除没用的代理,实在是非常麻烦。最后发现,其实只要摸清了目标限制策略,买几个额外的服务器ip,用多进程爬虫就把问题解决的又快又好
sigmadog
2014-02-12 21:01:30 +08:00
@simpx 怎么配置出口ip呀。。如果服务器有多个ip的话,有资料不?
lazybios
2014-02-13 01:20:03 +08:00
@wuyadong 不错 正需要分析下这方面的原型
guoyang
2014-02-13 09:36:29 +08:00
你哪个语言用的最好,就哪个好!
duwei
2014-02-13 11:24:35 +08:00
gevent的代码贴下?如果结果是比python多线程差的话,应该是没有利用上gevent的特性,比如使用了一些c的抓取库,这样的情况gevent是patch不到的。
fire5
2014-02-13 11:36:38 +08:00
被人骂过, 如下:

”爬虫,还多线程? 我们一般都每次抓取后sleep 3秒钟。高性能,多核。丢我们爬虫界的脸。“

想想也是,悠着点,你好他也好。
fork3rt
2014-02-13 16:25:22 +08:00
我一般都是 Python 多线程 + Google Bot的 header - -#
yakczh
2014-02-20 21:34:14 +08:00
@wuyadong \tigerspider-master\core\util.py", line 79, in <module>
@gen.coroutine
AttributeError: 'module' object has no attribute 'coroutine'
wuyadong
2014-05-03 16:12:10 +08:00
@yakczh tornado版本要新一点,coroutine是比较新的版本才有的

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

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

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

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

© 2021 V2EX