V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐学习书目
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 · 12630 views
    This topic created in 3347 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
        1
    mooncakejs  
       Feb 27, 2017
    选 js
    wellsc
        2
    wellsc  
       Feb 27, 2017
    c++
    kidlj
        3
    kidlj  
       Feb 27, 2017 via iPhone
    node
    zjsxwc
        4
    zjsxwc  
       Feb 27, 2017
    额,看你熟练哪种语言呗,我用 php ,毕竟 phpquery 可以像 jquery 一样操作获取到的 html 文本,通过 curl 函数就可以异步或同步的模拟浏览器操作。
    sudoz
        5
    sudoz  
       Feb 27, 2017
    js 的好处是可以直接在浏览器里跑,想想就带劲
    zungmou
        6
    zungmou  
    OP
       Feb 27, 2017
    @mooncakejs Node.js +1
    @wellsc 不嫌麻烦?
    @kidlj Node.js +1
    @zjsxwc PHP +1
    smallpath
        7
    smallpath  
       Feb 27, 2017
    node 请使用 v7.6.0 ,直接用 async/await 无痛开写,开了跨域代理还可以直接在 chrome 里跑
    TangMonk
        8
    TangMonk  
       Feb 27, 2017
    node +1, 性能好, 还有 PhantomJS 模拟浏览器
    jiangzhuo
        9
    jiangzhuo  
       Feb 27, 2017
    要不要试试 neocrawler
    v2dead
        10
    v2dead  
       Feb 27, 2017
    曾经是 phantomJS 做代理抓取渲染页面, python 在另一端处理任务,对抓到数据进行规整。这算是两个都用么?
    simapple
        11
    simapple  
       Feb 27, 2017
    scrapy +1
    zungmou
        12
    zungmou  
    OP
       Feb 27, 2017
    @v2dead PhantomJS 对于大规模爬虫应用的话,性能如何?
    viko16
        13
    viko16  
       Feb 27, 2017
    @smallpath #7 求详细,是说 node-inspector 吗?
    murmur
        14
    murmur  
       Feb 27, 2017
    现在爬虫的性能早就不是问题 难点在动态数据和反爬虫上

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

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

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