想写个爬虫程序,用什么技术好,谁能帮我呢 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kelos
V2EX    问与答

想写个爬虫程序,用什么技术好,谁能帮我呢

  •  
  •   kelos 2016-02-22 01:22:17 +08:00 8008 次点击
    这是一个创建于 3521 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如题,各种我要用的网站总想爬点东西下来,方便看。

    请指教。
    46 条回复    2016-02-23 17:49:25 +08:00
    Andy1999
        1
    Andy1999  
       2016-02-22 01:25:28 +08:00 via iPhone
    python3 吧
    em70
        2
    em70  
       2016-02-22 01:26:42 +08:00
    当然 python 啊,有什么可说的
    kelos
        3
    kelos  
    OP
       2016-02-22 01:31:14 +08:00
    @em70 有没有想过为什么大家都不考虑 java 呢
    random2case
        4
    random2case  
       2016-02-22 01:31:35 +08:00
    scala 可以吗?不喜勿喷~~~
    ahonn
        5
    ahonn  
       2016-02-22 01:40:38 +08:00 via Android
    Python Scrapy
    em70
        6
    em70  
       2016-02-22 02:11:46 +08:00
    @kelos 大多数个人需求的爬虫需要的是灵活快捷,不需要那么高效健壮的程序,python10 行代码就能搞定的事情 java 要写 100 行,没有优势. 但如果是百度,谷歌那种企业级爬虫,用 java 和 C 会更有优势
    ericls
        7
    ericls  
       2016-02-22 03:03:23 +08:00 via iPhone
    python asyncio
    lengjingxu
        8
    lengjingxu  
       2016-02-22 06:08:01 +08:00 via Android
    得看具体要爬多少量的东西以及内容格式还有你会什么计算机语言吧
    vitovan
        9
    vitovan  
       2016-02-22 06:45:23 +08:00
    Python 的包很多,坑很少,个人感觉。
    刚做了个: https://v2ex.com/t/258108
    vietor
        10
    vietor  
       2016-02-22 08:05:50 +08:00 via Android
    @random2case Python 最简单,容易部署。 scala 可以,用 sbt-assembly 打成一个包也便于部署,但加上 JDK 整体太大了,不值得。
    cxbig
        11
    cxbig  
       2016-02-22 08:17:37 +08:00
    条件不复杂我一般用 ruby on rails + nokogiri
    shulen
        12
    shulen  
       2016-02-22 08:19:30 +08:00
    这个应该要看你会什么技术
    bobbychen
        13
    bobbychen  
       2016-02-22 08:31:11 +08:00
    语言都不是问题~~~看你自己熟悉什么吧
    jugelizi
        14
    jugelizi  
       2016-02-22 08:56:25 +08:00
    人生苦短 我用 Python
    wizardoz
        15
    wizardoz  
       2016-02-22 09:31:33 +08:00
    scrapy 不解释
    cxshun
        16
    cxshun  
       2016-02-22 09:36:31 +08:00
    爬虫肯定 python 啊。

    不考虑 java 是因为如果你要解析 html ,要引用 xpath ,自带的 dom 库是不大好用的,要引入 jdom , jdom 又要另外的东西支持,反正弄来弄去一大堆。这种工具类的东西用脚本语言写是最合适的。
    fy
        17
    fy  
       2016-02-22 09:40:23 +08:00
    就 python 啊, http 库用 requests , HTML 复杂用 xpath ,简单直接用 re 正则模块,加个简单的面向过程的多线程,就上路了。
    scrapy ?牛刀杀鸡
    smalltalk
        18
    smalltalk  
       2016-02-22 09:52:50 +08:00
    @cxshun maven+jsoup=搞定
    java 的优势就是对于任何一个新库,只要观其大略,就可以快速上手。学 python 要记 api ,太痛苦了了。
    tabris17
        19
    tabris17  
       2016-02-22 10:12:36 +08:00
    Phatomjs ,除了效率差点,功能没话说
    IFoon
        20
    IFoon  
       2016-02-22 10:12:51 +08:00
    datapipeline
        21
    datapipeline  
       2016-02-22 10:17:19 +08:00
    短平快: scrapy 加 mongodb
    http://scrapy.org/ 可以先看看文档
    wlsnx
        22
    wlsnx  
       2016-02-22 10:23:53 +08:00
    scrapy 好用
    wusuopuBUPT
        23
    wusuopuBUPT  
       2016-02-22 10:24:43 +08:00
    scrapy 的一些例子,上个月刚用 scrapy 爬取了某直播站点的数据。
    https://github.com/wusuopubupt/scrapy-examples
    wusuopuBUPT
        24
    wusuopuBUPT  
       2016-02-22 10:25:28 +08:00
    从 geekan 的项目 fork 过来的: https://github.com/geekan/scrapy-examples
    CharlesL
        25
    CharlesL  
       2016-02-22 10:36:20 +08:00
    Java 的话 webmagic 挺好用,简单,支持分布式。
    zacard
        26
    zacard  
       2016-02-22 10:51:37 +08:00
    java 的话, jsoup ,也可以简单高效~
    luban
        27
    luban  
       2016-02-22 10:57:06 +08:00
    只会 java ,简单的 jsoup 解析下 html 就好,复杂的 webmagic ,基本能满足所有需求,灵活性也非常高
    slixurd
        28
    slixurd  
       2016-02-22 11:01:41 +08:00
    我也觉得拿 Java 写更方便,一个 JSoup ,简单爬虫的话什么框架都不用,自己写多线程,任务队列,简单轻松。最主要是对中文编码的处理实在太方便了,找到 HTML 的 charset ,然后反射对应的 Charset 就完事。
    Python2 的中文。。。。。
    slideclick
        29
    slideclick  
       2016-02-22 11:16:18 +08:00
    没写过,但是建议用 node,js 。第一你要爬虫肯定要能看懂页面里的 js 代码,第二其实你不用写爬虫,你可以用 chrome 扩展用 js 写。既然你需要懂 js 何必学习第二语言比如 python
    cxshun
        30
    cxshun  
       2016-02-22 11:28:58 +08:00
    @smalltalk 那倒也是,虽然我是搞 java 的,但我个人感觉 python 写这些会方便很多。只是 python2 和 3 之间的兼容问题确实坑爹。
    smalltalk
        31
    smalltalk  
       2016-02-22 11:35:47 +08:00
    @cxshun 就你的体会,方便在那里呢?是 api 的问题,还是语言问题,语言问题 kotlin 能补足吗?
    thursday
        32
    thursday  
       2016-02-22 11:50:32 +08:00
    nodejs 优势也很大。 能直接运行页面 js 。 dom 很自然处理。天然异步处理能力强。
    jedyu
        33
    jedyu  
       2016-02-22 11:52:45 +08:00
    安利一下 pyspider
    vaynewang
        34
    vaynewang  
       2016-02-22 11:54:46 +08:00
    Javascript
    woai110120130
        35
    woai110120130  
       2016-02-22 12:04:10 +08:00
    写了个纯c的
    cxshun
        36
    cxshun  
       2016-02-22 12:50:56 +08:00
    @smalltalk 更多的应该是 api 的问题, kotlin 这个我倒没去试过哈,有时间去试试。
    其实算是有点偏向吧,写这种小工具总是喜欢用 python 来。虽然 java 自己更熟,但 python 写起来感觉会爽一点哈。
    sohoer
        37
    sohoer  
       2016-02-22 13:42:16 +08:00
    twlsoft
        38
    twlsoft  
       2016-02-22 14:38:42 +08:00
    如果是用 node.js 的话也可以吧?
    smalltalk
        39
    smalltalk  
       2016-02-22 14:43:53 +08:00
    @cxshun 原来我测试 rest api 的时候,用 python ,后来改 dart 了( unicode 问题对迁移贡献很大)。小工具,一次性的东西,基本都用它。主要是有自动完成功能,编写、运行循环非常快速, api 也挺好。
    microchang
        40
    microchang  
       2016-02-23 00:00:47 +08:00
    @thursday 直接运行页面 js 有点过了吧。。。
    wanliqun
        41
    wanliqun  
       2016-02-23 08:12:13 +08:00
    @sohoer 给个验证码体验一下?
    slideclick
        42
    slideclick  
       2016-02-23 10:55:05 +08:00
    @microchang Phatomjs
    microchang
        43
    microchang  
       2016-02-23 13:51:53 +08:00
    @slideclick 这个我也玩过,不过他说的是 node 。毕竟客户端和服务端的运行环境还是不同的。
    thursday
        44
    thursday  
       2016-02-23 14:17:51 +08:00
    @microchang 我的意思是部分复杂代码可以匹配出来运行,直接拿到 js 里面的数据。并不是运行全部 js 。哪个是 Phatomjs
    microchang
        45
    microchang  
       2016-02-23 15:24:54 +08:00
    @thursday 感觉有点悬,虽然都是 js 虽然都是 v8 ,可能也只有部分纯逻辑不涉及到网络交互的代码可以直接运行。但是这部分代码如何筛选出来还是得人工干预,算下来得不偿失。
    slideclick
        46
    slideclick  
       2016-02-23 17:49:25 +08:00
    @microchang 我和你一样,比较怀疑在服务器端可以解析抓下来的 js 的可能性。有人真搞过么?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5400 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 40ms UTC 07:42 PVG 15:42 LAX 00:42 JFK 03:42
    Do have faith in what you're doing.
    ubao 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