pyspider 是弃坑了么..有啥类似的集成式的爬虫框架推荐不

2022-04-18 17:26:09 +08:00
 l0wkey
想写个小爬虫, 几年前用的 pyspider 感觉很方便(主要是集成度高,比如 webui/在线调试 /结果存储之类)。

当然 scrapy 也可以通过各个第三方配出来,但是写点小项目太庞大和复杂了写。
1860 次点击
所在节点    问与答
8 条回复
mywaiting
2022-04-18 18:14:41 +08:00
爬虫不都是 requests 一把梭,一连串的 if else 就写完了么?
l0wkey
2022-04-18 19:41:35 +08:00
@mywaiting 爬多个站,不好管理...
mimzy
2022-04-18 20:47:39 +08:00
@binux 尝试召唤
binux
2022-04-19 01:10:51 +08:00
因为之后我自己也没有使用场景,就没有维护了。
Kobayashi
2022-04-19 05:49:38 +08:00
这还用选吗,当然是 Scrapy 。爬虫不需要可视化,这是伪需求,懂 XPath 和 CSS 选择器语法就够了。
说 requests 的可能是没写过大量爬虫,爬虫从来都不是一个 HTTP 下载+HTML 解析问题。当你做大量爬取时,你要考虑各种其他设计:
1. 队列,生成的待爬取 URL 越来越多,需要队列存储待爬
2. 队列是支持先入先出还是先入后出,直接对应深度优先爬取和广度优先爬取
3. 爬取中断了如何恢复,是支持队列固化还是使用 Redis 做队列
4. 如何针对被爬 URL 去重,同样去重指纹怎么固化
5. 避免频率过高爬取时,钱多直接上代理池,免费先做并发控制、人工时延。或者多开几台机器搞分布式。
6. 人工时延是针对 IP 还是 host ,要不要加随机抖动
7. 如果不考虑 IP 被封,高并发爬取是线程池还是异步。
8. 对于偶发的网络问题导致的 HTTP 请求失败,要不要加入自动重试。
9. 或者更扯淡一点,为了避免发散爬取时进入对方蜜罐爬取大量无用连接,耗尽连接池。如何做深度控制。
10. ……
还有各种各样的问题,Scrapy 和 Scrapy 插件提供了现成的解决方案。
l0wkey
2022-04-19 10:23:16 +08:00
@Kobayashi #5 嗯 我主要是觉得 scrapy 太重了.. 写个小爬虫的情况下,比如之前 pyspider 写个小爬虫连存储都不需要自己搞。scrapy 肯定可以实现,但是多数情况下都需要单独选择插件,集成再测试
Kobayashi
2022-04-19 10:36:49 +08:00
嗯…… cookiecutter 配合 Scrapy 搭个脚手架,或者反过来配合 requests/httpx/aiohttp 搭个脚手架?
实话说,我尝试过的爬虫框架也不多,有时间你可以去尝试一些新框架。先帮你排个雷:ruia 。国人搞得自称 asyncio 版 scrapy ,读过二者源码,只能说借鉴了几个类名,框架运行逻辑完全不像,扩展程度天壤之别。
l0wkey
2022-04-19 10:47:46 +08:00
@Kobayashi #7 嗯...这次准备还是先用 @binux 大佬的 pyspider + 老版本 Python 跑起来凑合凑合了..
如果时间精力允许情况下,确实搭一套顺手的脚手架是合适的..

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

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

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

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

© 2021 V2EX