编写爬虫程序有多少轮子必须自己造? - 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
Hlianbobo
V2EX    Python

编写爬虫程序有多少轮子必须自己造?

  •  1
     
  •   Hlianbobo 2020-08-11 13:01:19 +08:00 6096 次点击
    这是一个创建于 1957 天前的主题,其中的信息可能已经有所发展或是发生改变。
    写一个广泛可用的爬虫程序需要克服很多障碍,解决许多具体的实际问题。障碍清单请看下面这个问题的优质回答:
    障碍清单 https://www.zhihu.com/question/265808959

    我的问题是克服这些障碍有多少是必须自己亲自造轮子解决?或者哪些问题现有的轮子解决的还不够好?有多少是已经有比较好的轮子可以完美的克服特定的障碍?有没有一个问题和轮子的对照表可以参考一下?最好都是 python 可以调用的轮子。
    28 条回复    2020-08-18 00:52:54 +08:00
    LifStge
        1
    LifStge  
       2020-08-11 13:25:15 +08:00   3
    调侃一下~
    轮子造的越多 跑的越快 越不满足 越跑越快 然后就跑进去了
    renmu123
        2
    renmu123  
       2020-08-11 13:39:34 +08:00
    不需要造,你想要的都有人造完了,下至 requests 上至爬虫集群管理
    xiaowo
        3
    xiaowo  
       2020-08-11 13:59:51 +08:00
    tikazyq
        4
    tikazyq  
       2020-08-11 14:00:54 +08:00   2
    一个生产可用的爬虫程序包括抓取、解析、入库、定时任务、增量抓取、监控、日志、数据统计等模块,真正要实现一套完备稳定的解决方案真的不是写几个 requests+BeautifulSoup 这么简单。

    如果你的爬虫程序只是为了临时性的采集一些数据,那么可能八爪鱼这种 to 小白工具就可以满足,或者简单的用 scrapy/requests 编写个简单爬虫即可。但如果爬虫是你的核心业务,例如搜索引擎、内容聚合、尽职调查等对爬虫有大量要求的应用场景,那么你可能需要考虑爬虫程序的规模性和可扩展性,例如定时任务、爬虫部署、任务调度、日志监控、结果去重,这些通常都需要自己实现一遍,比起写几个 xpath 抓取逻辑要麻烦很多,真的就是工程类问题了。不过好在我们有一些开源项目可以帮你处理这些繁琐的逻辑,例如我开发的轮子,分布式爬虫管理平台 Crawlab ( https://github.com/crawlab-team/crawlab ),可以运行任何语言和框架的管理平台,就是帮爬虫开发者维护管理生产可用的爬虫程序的。

    当然,爬虫领域现在比较高阶的技术例如逆向、反爬,这些属于比较偏 hack 的方向,需要长期的经验累积,有兴趣可以自行百度。另外爬虫的道德法律规范也是比较重要的,玩得不好就容易进去了。

    总而言之,爬虫从简单到复杂到生产可用是一个逐渐工程化的问题,需要的技术种类繁多,需要很多实战经验,不是调一些 API 就可以完成的。
    maxint
        5
    maxint  
       2020-08-11 14:49:30 +08:00 via iPhone
    核心问题不在轮子上
    musi
        6
    musi  
       2020-08-11 16:08:12 +08:00   4
    最主要的可能是法律问题?爬虫写得好,监狱进的早
    zzzmh
        7
    zzzmh  
       2020-08-11 16:10:17 +08:00
    @musi 哈哈哈哈哈 笑死我了
    Hlianbobo
        8
    Hlianbobo  
    OP
       2020-08-11 19:49:57 +08:00
    @renmu123 例如克服常见反爬壁垒(封 IP,返回垃圾信息,二维码验证……)现在都有轮子完美的解决了? python 开发者只需要按部就班调用轮子就可以克服以上障碍了?
    Hlianbobo
        9
    Hlianbobo  
    OP
       2020-08-11 19:51:56 +08:00
    @musi 国内有爬社交网络被起诉的案例么?如果没有黑进对方系统。对方的数据都是网上公开人人可见的数据。那么获取 html 代码解析里面的数据,具体触犯什么法律了? 是否有这方面的介绍?
    w568w
        10
    w568w  
       2020-08-11 23:09:28 +08:00 via Android
    @Hlianbobo 有,还不少…

    法律不好说,有些严重的定为入侵计算机系统罪,也有定成侵犯公民个人信息罪的。

    具体看这个: https://zhuanlan.zhihu.com/p/66997586
    Juszoe
        11
    Juszoe  
       2020-08-11 23:50:55 +08:00
    @Hlianbobo #8 大部分只是成本问题,不是轮子能解决的
    IP:代理
    脏数据:数据清洗,有很多框架,这个应该不算爬虫领域内了
    验证码:打码平台
    jones2000
        12
    jones2000  
       2020-08-11 23:55:54 +08:00
    造轮子可以让你深入了解整个抓取的流程,和需要踩的坑. 如果你对开发不感兴趣,可以直接购买云抓取服务,直接给你抓取好的数据,你直接 py 解析页面数据就可以。
    Myprincess
        13
    Myprincess  
       2020-08-12 00:00:29 +08:00
    @tikazyq 怎么解决网站限制,就是有很多 SKU,比如好几万,但是你查看时,只能看到前 1500 条信息。这种怎么破。
    locoz
        14
    locoz  
       2020-08-12 02:14:02 +08:00
    严格来说,只要你舍得花钱,几乎没有轮子是必须自己造的...
    然后你发的这个知乎链接里的回答其实也比较老了,技术日新月异,现在不会逆向基本是找不到工作的,而那些回答里所说的很多问题实际上都有现成的解决方案。

    通常来说,除去需要逆向的部分以外,其他所谓的解析、分布式、监控、报警、部署之类的一堆东西,通通都有现成的方案,并且也有很多相关的工具把这些东西都给集成好了。即使没有,你也可以直接拿大数据、后端、前端、安全领域的一些东西来用,反正都是通用的。

    而逆向部分,如果你舍得花钱,那直接去调用别人接口解决加密参数生成、验证码识别之类的分分钟就能解决;但如果你不舍得花钱,那不同平台的反逆向手段并不一定相同。
    比如瑞数这种,会有专门的人为特定网站每天更新加密参数的生成规律、策略等,这种情况没有通用的轮子,别人有轮子也不会放出来给你用,只能自己造轮子去解决初次分析和后续的自动更新问题。


    @Hlianbobo #8
    封 IP 问题接代理 IP,即使是 4G 代理这种高质量且稀少的 IP,目前国内也开始有人卖了,并不需要自己造轮子(以前需要)。
    返回脏数据说明被识别到了,属于逆向部分没做好或行为部分没做好,没有轮子能解决这种需要脑力劳动的事情。
    二维码验证不同平台都是不同的,又何来的轮子通用化解决?本质上还是逆向部分的问题。
    locoz
        15
    locoz  
       2020-08-12 02:15:22 +08:00
    @Myprincess #13 人家后端限制你只能看 1500 条,那你就只能看 1500 条。人都无法看到的东西,机器也一样无法看到。
    Hlianbobo
        16
    Hlianbobo  
    OP
       2020-08-12 13:44:55 +08:00
    @jones2000 谢谢回复。你所提到的云抓服务成熟度高么?以下问题:1 、html 信息不完整,关键信息在加密了。不在前端直接展示。2 、发现你在爬信息,故意给你返回垃圾信息。诸如此来不一而足。以上属于云抓服务解决问题的范畴么?如果属于,目前云抓服务在克服以上问题都做的很完善么?有没有优质服务商推荐呢?
    Hlianbobo
        17
    Hlianbobo  
    OP
       2020-08-12 13:47:10 +08:00
    @Myprincess 不知道怎么给你的问题点赞。所以只好通过回复赞赏
    Hlianbobo
        18
    Hlianbobo  
    OP
       2020-08-12 13:59:43 +08:00
    @locoz 谢谢高质量的详细回复。受益匪浅。小白看后生出更多疑问:
    严格来说,只要你舍得花钱,...........上都有现成的解决方案。
    ------------逆向的意思是特指那些没有 web 页面,只有 app 服务的(例如拼多多)的信息抓取么?以下是我的揣测:因为都是 app 内展现数据,所以信息都是加密的,只能在他们自己的 app 内解析展现。就算你能抓取他传送的信息,但是无法解密也无法利用这些信息。逆向的意思就是获取他们的解密算法和解析算法。是么?



    通常来说,除去需要逆向的部分以外,其他所谓的解析、分布式、监控、报警、部署之类的一堆东西,通通都有现成的方案,并且也有很多相关的工具把这些东西都给集成好了。即使没有,你也可以直接拿大数据、后端、前端、安全领域的一些东西来用,反正都是通用的。
    ------------请问有业内公认好用的轮子推荐么?就是直接在 python 内分别 import 以后就直接调用他的函数就可以完美的克服以上障碍。而且用的人比较多。使用中遇到问题,书籍和网上的回复比较丰富的。主要担心理论上有轮子,实际用起来一言难尽.........
    -----------“你也可以直接拿大数据、后端、前端、安全领域的一些东西来用,反正都是通用的。”大数据,后端前端的东西和爬数据有什么联系?怎么拿来使用。请问有这方面的文章和书推荐么?就是怎么利用这些非爬虫工具来克服爬取数据过程中遇到的障碍。



    而逆向部分,如果你舍得花钱,那直接去调用别人接口解决加密参数生成、验证码识别之类的分分钟就能解决;但如果你不舍得花钱,那不同平台的反逆向手段并不一定相同。
    比如瑞数这种,会有专门的人为特定网站每天更新加密参数的生成规律、策略等,这种情况没有通用的轮子,别人有轮子也不会放出来给你用,只能自己造轮子去解决初次分析和后续的自动更新问题。
    ----------------请问有做社交媒体逆向比较好的服务商推荐么?比如针对大众点评,美团,微博,小红书.......
    jones2000
        19
    jones2000  
       2020-08-12 19:25:24 +08:00
    @Hlianbobo 我用的是八抓鱼, 抓些不太重要的新闻数据。如果是重要的数据,一般会找数据商购买, 不会自己抓, 太麻烦,而且数据校对也是个问题。 如果是买数据商的数据,质量一般没什么问题,合同里面一般都会标明数据错误是要扣他们钱的。
    Hlianbobo
        20
    Hlianbobo  
    OP
       2020-08-12 20:43:46 +08:00
    @jones2000 谢谢,如果我要抓社交媒体留言和评论。目前有这方面的靠谱数据商推荐么?
    jeeyong
        21
    jeeyong  
       2020-08-14 23:46:28 +08:00
    @locoz 求教针对 selenium webdriver=true 这种检测怎么破?
    网上得办法我都试过.
    第一种, 访问网站前修改 webdriver 对象. 这里面又有好多种.
    第二种, 通过参数屏蔽 webdriver, 这种 chromedriver 更新后就不行了
    还有什么办法>?
    locoz
        22
    locoz  
       2020-08-17 17:56:18 +08:00
    @Hlianbobo #18
    你爬别人东西,别人会在各种方面(如展示、请求、解析等)阻拦你,而不是仅仅在于你所说的展示部分,也并不一定是获取解密算法和解析算法。逆向是为了将各种阻拦一一剥开,让你的爬虫程序能模拟得像对方自己的客户端一样。

    轮子不是只有 python 库...即使单说 python 库,很多时候也不可能仅仅是 import 之后直接调用就能解决问题,总会需要按你自己的情况进行配置的。

    大数据、后端、前端的东西可以用来解决特定问题,爬虫本身涉及到的领域就很多,其他相关领域的东西自然可以被拿来用啊。你现在不知道有什么联系、怎么拿来使用,说明你没有碰到过相关问题,等你碰到了自然就会去找、去了解了,没必要刻意学。

    我不知道你所说的“做社交媒体逆向”的服务商指的是什么,通常来说这种卖服务的都是卖数据、卖特定加密参数的生成、卖特定验证码的识别等,并且除了卖数据的以外,其他与逆向直接相关的基本都不会在明面上卖。
    locoz
        23
    locoz  
       2020-08-17 18:01:22 +08:00
    @jeeyong #21 最简单的办法就是直接干掉对方的检测...正所谓“只要我把看见我的人都杀了,就没有人会知道我来过”。
    Hlianbobo
        24
    Hlianbobo  
    OP
       2020-08-17 19:03:13 +08:00
    @locoz 谢谢回复。我明白了。
    有没有比较靠谱和知名的爬虫服务提供商。我告诉他我要爬哪些网站的哪些数据,他就按照指定要求爬下来。
    locoz
        25
    locoz  
       2020-08-17 19:07:05 +08:00
    @Hlianbobo #24 这家你可以看看,大部分你需要的应该都有: https://www.idataapi.cn/t/blfaaal
    vincekang
        26
    vincekang  
       2020-08-17 23:26:40 +08:00
    项目代码: https://github.com/kangvcar/InfoSpider

    项目使用文档: https://infospider.vercel.app

    项目视频演示: https://www.bilibili.com/video/BV14f4y1R7oF/

    INFO-SPIDER 是一个集众多数据源于一身的爬虫工具箱,旨在安全快捷的帮助用户拿回自己的数据,工具代码开源,流程透明。支持数据源包括 GitHub 、QQ 邮箱、网易邮箱、阿里邮箱、新浪邮箱、Hotmail 邮箱、Outlook 邮箱、京东、淘宝、支付宝、中国移动、中国联通、中国电信、知乎、哔哩哔哩、网易云音乐、QQ 好友、QQ 群、生成朋友圈相册、浏览器浏览历史、12306 、博客园、CSDN 博客、开源中国博客、简书。
    Hlianbobo
        27
    Hlianbobo  
    OP
       2020-08-17 23:46:50 +08:00   1
    @vincekang 谢谢回复。刚看了视频。网站直接输入用户名进入。不需要指定下载内容,软件怎么知爬取哪些内容?看到很多文章说爬取邮件。实务当中爬取邮件是一般是基于什么需求?
    vincekang
        28
    vincekang  
       2020-08-18 00:52:54 +08:00
    @Hlianbobo 项目使用说明文档里有每个数据源所爬取的数据的示例哦,你可以仔细看看说明文档哦。
    ![20200818005018.png]( https://i.loli.net/2020/08/18/HZjuxU1zJSs5aOh.png)
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2481 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 10:41 PVG 18:41 LAX 02:41 JFK 05:41
    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