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 · 5613 次点击
    这是一个创建于 1564 天前的主题,其中的信息可能已经有所发展或是发生改变。
    写一个广泛可用的爬虫程序需要克服很多障碍,解决许多具体的实际问题。障碍清单请看下面这个问题的优质回答:
    障碍清单 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   ·   实用小工具   ·   2507 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 15:30 · PVG 23:30 · LAX 07:30 · JFK 10:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.