Python爬虫选型——Scrapy

714 阅读4分钟

一、序言

  • 随着国内大大小小企业数智化转型不断深入,最大程度地满足业务需求,最佳手段是靠数据决策、智能流程来完成。伴随着 GPT5 横空问世,已是企业长久可持续发展的必然趋势。

  • 大量数据信息有哪些渠道呢?除了人工录入,公司内部信息系统的数据资产以外,竞品网站、互补互联网的开放资源其实也是宝贵的数据资产,一定程度在数据决策分析上起着关键作用。

  • 因此,为了满足公司运营部需求 —— 要求技术部门利用合理手段抓取市场运营数据来支撑数据决策。

二、选型

基于上述背景,本章节主要向大家介绍下,选择框架的大致思路步骤,希望能给大家一些启示。

2.1 编程语言

选型第一步,需要明确目标,高效抓取并处理数据。基于这个目标,我首先考虑是 python,因为是解释型语言(所见即所得),不管是开发还是调试效率都比较高;其次,python 有较多免费开源类库,针对大数据量处理与清洗有天然优势;最后,python 有较多的爬虫框架,在这方面有绝对优势。因此,编程语言最终选择的是 python。

2.2 选择框架

python 爬虫框架有很多,例如 Beautiful Soup,PySpider,Scrapy 等等,那基于什么标准来选框架呢?

对于我来说,第一步是要明确抓什么样的数据,是纯页面,还是纯接口的,还是页面加接口等,最后了解下来,需要满足多种场景。基于要满足各种场景数据抓取的需求,比对了常用框架 PySpider 和 Scrapy,发现 Srapy 更符合要。Scrapy 是一个“一个比较灵活的,可配置的爬虫”,每个环节都可以高度定制, 比较适用公司级别的数据抓取,而且对应的社区比较活跃,点赞量超过 47K,fork 量超过 10k,这说明这个框架受到了全球开发者的喜爱,对于日后出现任何框架上的问题都有了很好的保障。

第二步,我会去尝试使用上述的框架,去了解框架设计的理念和框架的实用性。基本的入门在这里就不过多赘述了,大家感兴趣可以自行查看下方链接学习。

--> scrapy 入门教程

从理念上来讲 scrapy 追求的是灵活、简单。灵活体现在每一步的配置包括访问或拦截的每个请求都可以按照开发者的意愿去调整优化,其次一些辅助或互补的功能模块也是以插件的形式结合的,解耦做得比较好;而简单体现在框架整体流程比较清晰明确,流程中每个节点原子性做得比较好,各司其职,方便后期快速排查问题,定位问题,其次,针对简单页面抓取值,开发者只需要简单配置下就能完成,让开发者更关注于业务非底层实现。

结合上述两步的验证与考量,最终自己选择了 Scrapy。

三、关联生态

3.1 Scrapyd

使用过 Scrapy 的童鞋都清楚,基于开发者本地开发调试使用 scrapy 命令操作就可以完成。但如果要基于服务来的话,就需要用 Scrapyd 服务来操作。Scrapyd 主要解决了可视化与服务端的问题,主要提供了 Job,Logs 可视化。

scrapyd_1.png

具体 Scrapyd 安装与操作希望大家自行翻阅资料,下面就 Scrapyd 常用的命令罗列下:

常用名命令执行命令命令描述
scrapydscrapyd启动 scrapy 服务
scrapyd-deployscrapyd-deploy [部署名称] -p [项目名称]部署爬虫项目
scrapyd-deploy eggscrapyd-deploy --build-egg output.egg生成 egg 文件

Scrapyd webapi 的常用命令:

3.2 SpiderKeeper

根据以往项目经验,SpiderKeeper 也是 Scrapy 的关联生态。SpiderKeeper 主要功能是给 Scrapy 插上定时任务功能的翅膀,但 SpiderKeeper 依附于 Scrapyd 服务,从其启动的命令就能看出来:

$root spiderkeeper --server=http://127.0.0.1:6800

scrapyd_2.png

四、总结

最后花一分钟时间跟大家总结下,任何技术选型的前提是理清楚业务需求目标,有了目标才能去选择技术框架,然后对比框架要从理念、性能、可维护、可拓展、关联生态的维度去考量,同时结合项目经验,相信选出的框架肯定不会差,要相信自己是最棒的!