为啥 Python 爬虫这么火,相比 Java 爬虫有啥优势? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
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
gejun123456
V2EX    Python

为啥 Python 爬虫这么火,相比 Java 爬虫有啥优势?

  •  
  •   gejun123456
    gejun123456 2020-06-28 21:53:07 +08:00 8744 次点击
    这是一个创建于 1940 天前的主题,其中的信息可能已经有所发展或是发生改变。

    java jsoup,多线程也方便,python 有哪些 java 爬虫没有的优势?

    48 条回复    2024-08-16 09:01:23 +08:00
    tikazyq
        1
    tikazyq  
       2020-06-28 22:03:04 +08:00
    动态语言做爬虫不香?
    lenqu
        2
    lenqu  
       2020-06-28 22:27:32 +08:00
    用的人多,方便实现
    echo1937
        3
    echo1937  
       2020-06-28 22:29:29 +08:00 via iPhone
    因为库多,搞起来方便,尤其是应付反爬这一块。
    xiri
        4
    xiri  
       2020-06-28 22:32:17 +08:00
    写起来快
    Nich0la5
        5
    Nich0la5  
       2020-06-28 22:37:44 +08:00 via Android
    开发快,而且爬虫是最不在乎运行效率的
    EminemW
        6
    EminemW  
       2020-06-28 22:54:16 +08:00
    自己写爬虫用 Python 当然是因为写的快。
    em70
        7
    em70  
       2020-06-28 22:55:10 +08:00
    目标经常变化,JAVA 花 1 周做个爬虫可能 3 天就不能用了,明显不合理,这方面动态语言优势明显

    当然如何是搜索引擎这种通用爬虫,JAVA 比 python 更适合
    catxo
        8
    catxo  
       2020-06-28 22:56:16 +08:00
    我只知道我接手的一个 java 爬虫,刚启动就吃了 2G 内存,emmmmmm
    movistar
        9
    movistar  
       2020-06-28 23:05:53 +08:00
    当你的爬虫在几百台机器上都跑满了 CPU,但是 QPS 也没多少,抓的没有别人更新的快的的时候,你就知道为什么要换 Java/Golang/C++跑爬虫了...
    CPU 比内存贵多了.大部分机器 CPU:内存都是 1:8 甚至 1:16 以上的.内存空着就是浪费了,超卖了也就 1:4
    当然大部分人的爬虫跑不了几台机器,也不是用来吃饭的家伙,当然什么好写用什么,没什么数据量的我也选 Python
    binux
        10
    binux  
       2020-06-28 23:37:15 +08:00 via Android
    @movistar #9 带宽更贵
    limuyan44
        11
    limuyan44  
       2020-06-29 00:05:44 +08:00 via Android
    爬虫从来都问题都不在语言上而在反爬上,至于为什么用 Python,纯粹是因为代码行数短或者说大部分人接触爬虫都是从 python 开始的。总而言之,对于普通人来说无非因为简单二字,一般网站几行代码就能爬到需要的数据。你要谈性能,一般人可碰不上。
    airqj
        12
    airqj  
       2020-06-29 00:39:14 +08:00 via Android
    @movistar 什么爬虫用 cpp 来写?
    musi
        13
    musi  
       2020-06-29 00:45:23 +08:00   1
    开发效率快,特别是对于那种经常更换反爬策略的,等你爬虫写完了别人也更新完了反爬策略你还爬个鸡儿
    alexkkaa
        14
    alexkkaa  
       2020-06-29 07:09:33 +08:00 via Android   1
    crawler 和 spider 是不一样的 像那些全网爬不在乎个别网站是否能爬到的可以用静态语言。但是针对特定网站的 crawler 需要灵活迅速的跟对方打游击战,你用 java 黄花菜都凉了
    LokiSharp
        15
    LokiSharp  
       2020-06-29 08:49:28 +08:00 via iPhone
    Python 是个人就能写了。。。
    cat9life
        16
    cat9life  
       2020-06-29 09:18:01 +08:00
    Python 最大的优点就是简单好用,上手快,2 天入门几行代码就能跑起来,别跟我谈什么性能,大部分就是玩票的性质。要性能九别用 Python
    passerbytiny
        17
    passerbytiny  
       2020-06-29 09:50:31 +08:00 via Android
    我是一个 java 开发,我现在轻易不想写代码。一个小功能就要动好几个源文件,还要写相对大量的单元测试代码,就算有 CI 还是感觉累。

    看上面的回复,怕虫是超高频变化的,用 java 真不合适。
    no1xsyzy
        18
    no1xsyzy  
       2020-06-29 10:05:51 +08:00
    @movistar #9 你的误解大概是搞错了爬虫和蜘蛛。见 #14
    cweijan
        19
    cweijan  
       2020-06-29 10:28:22 +08:00
    以前我看 python 爬虫很火就跟着写了个, 但发现维护起来实在头疼, 现在已经用 Java 重写了, 使用 webmagic 开发效率完全不输 python
    wysnylc
        20
    wysnylc  
       2020-06-29 10:49:18 +08:00
    @cweijan #19 py 写爬虫纯粹是老手图简单快速新手只会 py,真要想长久发展不可能用动态类型的语言维护成本爆炸
    还有吹 py 包多的,java 笑抽
    namelosw
        21
    namelosw  
       2020-06-29 11:11:23 +08:00
    爬虫这种东西需要反复调试,BS4 在 Console 里直接写,可以直接 body.div.h2.a.text,Java 写不难受嘛……

    而且爬虫这种一天一改的,Java 搞出来还给对方建模?不建模跟动态类型有什么区别?

    聊性能的不知道爬虫主要是 IO ?

    @wysnylc Py 现在可以加类型了
    wysnylc
        22
    wysnylc  
       2020-06-29 11:16:45 +08:00
    @namelosw #21 任何一个要长久发展的项目都需要多人协作和更新维护,就 py 这技术氛围有几个能考虑后面事写的几乎都是"一次性"无法更新无法协作的代码
    还是那个老话,py 这类动态语言没有约束开发氛围散漫根本不适合大型项目只能做点胶水工作
    securityCoding
        23
    securityCoding  
       2020-06-29 11:19:17 +08:00
    短平快
    XanderChen
        24
    XanderChen  
       2020-06-29 13:04:23 +08:00
    一直认为 java 要装 jdk 来着?

    是不是要装,要装的话我选 python 。(手动狗头
    Rwing
        25
    Rwing  
       2020-06-29 13:06:50 +08:00
    我用 C# 写爬虫 ┑( ̄Д  ̄)┍
    AlisaDestiny
        26
    AlisaDestiny  
       2020-06-29 13:26:09 +08:00
    就凭 Python 可以开个交互式环境,写一点调试一点看下输出,Java 稍微改一点就要重新编译执行太累。
    LuJason
        27
    LuJason  
       2020-06-29 13:41:37 +08:00
    我觉得爬虫就是营销号为了卖课而带火的
    geekeroro
        28
    geekeroro  
       2020-06-29 15:56:46 +08:00
    优势就是方便……这么多现成的东西
    chniccs
        29
    chniccs  
       2020-06-29 16:04:49 +08:00
    写起来快,改起来快,调试更快。运行快不快,大部分需求中倒是其次的
    qsbaq
        30
    qsbaq  
       2020-06-29 16:27:00 +08:00
    开发快+1
    sidegem
        31
    sidegem  
       2020-06-29 16:28:57 +08:00
    简单
    optional
        32
    optional  
       2020-06-29 16:30:49 +08:00
    python 爬虫已经过去了, 现在用 js 写爬虫不香吗
    维护,typescript 了解一下。
    optional
        33
    optional  
       2020-06-29 16:31:51 +08:00
    @wysnylc 动态类型不好维护? 我觉得 typescript 的维护性比 java 还高,java 经常改个类型改好几个文件(我是 java 开发)。
    79lawyer
        34
    79lawyer  
       2020-06-29 16:35:34 +08:00
    @limuyan44 每次看到老哥头像都感觉在督促我减肥
    wuwukai007
        35
    wuwukai007  
       2020-06-29 16:46:51 +08:00
    并不是 python 适合爬虫,是快速开发的场景( xxx )适合 python
    silkriver
        36
    silkriver  
       2020-06-29 16:52:00 +08:00 via Android
    经常需要调参数和展示数据的场合,Jupyter Notebook 是神器
    cweijan
        37
    cweijan  
       2020-06-29 16:54:52 +08:00
    @optional 其实是 py 不好维护, 编译没问题, 一运行就各种报错, js 相对来说稳定点, 不过用 js 类库显然是比不过 Java 的.
    murmur
        38
    murmur  
       2020-06-29 16:55:32 +08:00
    语法简单,其实现在都是用 headless
    optional
        39
    optional  
       2020-06-29 16:57:16 +08:00
    @cweijan 就爬虫而言,js 比不过 java ?不存在的。
    用 js 写,http request 不说了,html 解析各种 selector,headless chrome api 无缝兼容, 浏览器插件都可以直接写。
    drackzy
        40
    drackzy  
       2020-06-29 16:58:54 +08:00
    python 爬的快,进监狱也快。
    ricardochrist
        41
    ricardochrist  
       2020-06-29 17:08:20 +08:00
    全名 python 啊现在
    cweijan
        42
    cweijan  
       2020-06-29 17:59:09 +08:00
    @optional 你可以看下 webmagic 这个库, 支持 xpath 和 css 选择器
    optional
        43
    optional  
       2020-06-29 18:00:40 +08:00
    @cweijan java 肯定有,但是 js 会更多啊,甚至还能直接 eval 出来加密解密相关的 js
    krixaar
        44
    krixaar  
       2020-06-29 18:04:22 +08:00
    有些时候写爬虫不需要那么兴师动众,路边拿铲子刨个坑的事儿不值得旁边选块地界建挖机工厂……
    WilliamYang
        45
    WilliamYang  
       2020-06-29 23:41:08 +08:00 via iPhone
    @cweijan 其实 webmagic 都好像几年没更新了,不建议用,还不如用 scrapy
    jeeyong
        46
    jeeyong  
       2020-06-29 23:54:19 +08:00
    早前 python 做爬虫, 是因为库多, 语法简单吧?
    现在你应该问, node 做爬虫香吗?
    香...正如 @optional 说的, 加解密的 js, 直接 eval 掉...甚至不知道哪段是负责加解密的?
    我直接全执行掉.........
    cwxcwx2018
        47
    cwxcwx2018  
       2020-07-02 10:16:03 +08:00
    哪里可以学爬虫,苦于没有经验入手。(难道我的搜索关键词有问题)
    chaoschick
        48
    chaoschick  
       2024-08-16 09:01:23 +08:00
    @airqj Google:虽然 Google 的爬虫(如 Googlebot )具体实现细节是机密的,但有报道称,Google 早期的基础设施中使用了大量 C++ 代码,这可能包括部分爬虫组件。
    Bing:类似地,微软的搜索引擎 Bing 也可能在其爬虫和索引系统中使用了 C++,因为微软的许多核心系统都是用 C++ 开发的。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1413 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 16:50 PVG 00:50 LAX 09:50 JFK 12:50
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86