推荐学习书目
› Learn Python the Hard Way
Python Sites
› PyPI - Python Package Index
› http://diveintopython.org/toc/index.html
› Pocoo
值得关注的项目
› PyPy
› Celery
› Jinja2
› Read the Docs
› gevent
› pyenv
› virtualenv
› Stackless Python
› Beautiful Soup
› 结巴中文分词
› Green Unicorn
› Sentry
› Shovel
› Pyflakes
› pytest
Python 编程
› pep8 Checker
Styles
› PEP 8
› Google Python Style Guide
› Code Style from The Hitchhiker's Guide
zungmou
V2EX  ›  Python

Python vs Node.js 哪个更适合用于爬虫?

  •  
  •   zungmou · Feb 27, 2017 · 13061 views
    This topic created in 3538 days ago, the information mentioned may be changed or developed.

    Python 的优点是高效,从零到爬半个小时估计就能动起来。

    Node.js 更侧重于 io 处理,但其 Javascript 语言特性也能带来高效的开发体验。

    两者都有不错的异步性能, Python 3 之后已经原生支持协程, Node.js 更不用说了。

    所以这两个用于爬虫,如果都熟练掌握,你会更倾向于哪一个?

    39 replies  •  2017-03-04 15:37:24 +08:00
    mooncakejs
    mooncakejs
    Feb 27, 2017
    1
    选 js
    wellsc
    wellsc
    Feb 27, 2017
    2
    c++
    kidlj
    kidlj
    Feb 27, 2017 via iPhone
    3
    node
    zjsxwc
    zjsxwc
    Feb 27, 2017
    4
    额,看你熟练哪种语言呗,我用 php ,毕竟 phpquery 可以像 jquery 一样操作获取到的 html 文本,通过 curl 函数就可以异步或同步的模拟浏览器操作。
    sudoz
    sudoz
    Feb 27, 2017
    5
    js 的好处是可以直接在浏览器里跑,想想就带劲
    zungmou
    zungmou
    OP
    Feb 27, 2017
    6
    @mooncakejs Node.js +1
    @wellsc 不嫌麻烦?
    @kidlj Node.js +1
    @zjsxwc PHP +1
    smallpath
    smallpath
    Feb 27, 2017
    7
    node 请使用 v7.6.0 ,直接用 async/await 无痛开写,开了跨域代理还可以直接在 chrome 里跑
    TangMonk
    TangMonk
    Feb 27, 2017
    8
    node +1, 性能好, 还有 PhantomJS 模拟浏览器
    jiangzhuo
    jiangzhuo
    Feb 27, 2017
    9
    要不要试试 neocrawler
    v2dead
    v2dead
    Feb 27, 2017
    10
    曾经是 phantomJS 做代理抓取渲染页面, python 在另一端处理任务,对抓到数据进行规整。这算是两个都用么?
    simapple
    simapple
    Feb 27, 2017
    11
    scrapy +1
    zungmou
    zungmou
    OP
    Feb 27, 2017
    12
    @v2dead PhantomJS 对于大规模爬虫应用的话,性能如何?
    viko16
    viko16
    Feb 27, 2017
    13
    @smallpath #7 求详细,是说 node-inspector 吗?
    murmur
    murmur
    Feb 27, 2017
    14
    现在爬虫的性能早就不是问题 难点在动态数据和反爬虫上

    你不是会挂代理么 吼哇 那我们就玩注册吧
    DarsyCheuk
    DarsyCheuk
    Feb 27, 2017
    15
    哪个熟悉点就用哪个呗
    个人偏向 node 毕竟 js 语言摆在那😄
    murmur
    murmur
    Feb 27, 2017
    16
    @zungmou 有人自称组件了 1000+实例的集群 除了每隔一段时间要强制重启释放资源外 没啥
    neoblackcap
    neoblackcap
    Feb 27, 2017
    17
    @zungmou 内存泄漏
    neoblackcap
    neoblackcap
    Feb 27, 2017❤️1
    18
    个人感觉大规模的爬虫都不应该使用基于 Chrome 的技术,基于 mozilla 的 spidermonkey 来做的爬虫可能性能会更好,关键是 V8 的引擎并非线程安全,你用到 V8 的时候就需要加锁,要提高并行就是加进程。一台服务器能上多少个进程?
    zungmou
    zungmou
    OP
    Feb 27, 2017
    19
    @murmur
    @neoblackcap

    感谢!
    fy
    fy
    Feb 27, 2017
    20
    都适合。 nodejs 有个额外好处是能直接解释执行页面上部分 js 代码(虽然要考虑安全性)。
    maxmilia
    maxmilia
    Feb 27, 2017
    21
    PHP
    v2dead
    v2dead
    Feb 27, 2017
    22
    @zungmou 你可以一直加服务嘛,性能不够机器来凑。不过确实是要隔一段时间重启 phantomJS ,不知道是不是内存泄露,隔一段时间内存跑的高的不行。我当时是做进程池,每个 phantomJS 能跑十几次任务就直接让它重启了。
    murmur
    murmur
    Feb 27, 2017
    23
    @neoblackcap 线程和进程有区别么,难道用线程渲染页面的 cpu 负载就能下来?
    XIVN1987
    XIVN1987
    Feb 27, 2017 via Android
    24
    如果只是爬虫的话,用自己最熟悉的最好
    如果还想对爬来的数据进行分析的话,那 Python 更好,有 pandas 这样的神器,还有很多统计、机器学习方面的库
    bigdogbigpig
    bigdogbigpig
    Feb 27, 2017 via iPhone
    25
    node 一个巨大的优势在于如果你要爬的页面用 js 搞了个前端加密,虽然没有什么用但是 python 就很难处理
    jy01264313
    jy01264313
    Feb 27, 2017
    26
    Python
    neoblackcap
    neoblackcap
    Feb 27, 2017
    27
    @murmur 你开进程需要内存的啊,线程可是共享内存啊。
    jarlyyn
    jarlyyn
    Feb 27, 2017
    28
    @fy

    node 不是有 vm 么
    fy
    fy
    Feb 27, 2017
    29
    @jarlyyn 作为平台无关的动态语言,大家都有 vm 吧……
    xieranmaya
    xieranmaya
    Feb 27, 2017
    30
    我都是直接在浏览器里爬的
    freestyle
    freestyle
    Feb 27, 2017
    31
    scrapy +
    only0jac
    only0jac
    Feb 27, 2017 via Android
    33
    怎么没人说 pyspider
    akring
    akring
    Feb 27, 2017
    34
    @xieranmaya 老铁 666
    fy
    fy
    Feb 27, 2017
    35
    @xieranmaya 生物脑智能技术肉眼爬虫表示压力不大
    songjiaxin2008
    songjiaxin2008
    Feb 27, 2017
    36
    我觉得都可以啊...Python 也有执行 JS 的包 之前用的是这个 https://github.com/doloopwhile/PyExecJS 但是国内更多的云平台都可以免费运行 Node 再加上[Cheerio]( https://github.com/cheeriojs/cheerio)这种包 也是很爽的
    insomniowl
    insomniowl
    Feb 27, 2017
    37
    进来学习
    mingyun
    mingyun
    Feb 27, 2017
    38
    python requests 不解释
    log4geek
    log4geek
    Mar 4, 2017
    39
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5195 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 88ms · UTC 06:34 · PVG 14:34 · LAX 22:34 · JFK 01:34
    ♥ Do have faith in what you're doing.