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

2020-08-11 13:01:19 +08:00
 Hlianbobo
写一个广泛可用的爬虫程序需要克服很多障碍,解决许多具体的实际问题。障碍清单请看下面这个问题的优质回答:
障碍清单 https://www.zhihu.com/question/265808959

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

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

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

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

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

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

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

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


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



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



而逆向部分,如果你舍得花钱,那直接去调用别人接口解决加密参数生成、验证码识别之类的分分钟就能解决;但如果你不舍得花钱,那不同平台的反逆向手段并不一定相同。
比如瑞数这种,会有专门的人为特定网站每天更新加密参数的生成规律、策略等,这种情况没有通用的轮子,别人有轮子也不会放出来给你用,只能自己造轮子去解决初次分析和后续的自动更新问题。
----------------请问有做社交媒体逆向比较好的服务商推荐么?比如针对大众点评,美团,微博,小红书.......
jones2000
2020-08-12 19:25:24 +08:00
@Hlianbobo 我用的是八抓鱼, 抓些不太重要的新闻数据。如果是重要的数据,一般会找数据商购买, 不会自己抓, 太麻烦,而且数据校对也是个问题。 如果是买数据商的数据,质量一般没什么问题,合同里面一般都会标明数据错误是要扣他们钱的。
Hlianbobo
2020-08-12 20:43:46 +08:00
@jones2000 谢谢,如果我要抓社交媒体留言和评论。目前有这方面的靠谱数据商推荐么?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/697344

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX