Python爬虫选型——Scrapy
一、序言
-
随着国内大大小小企业数智化转型不断深入,最大程度地满足业务需求,最佳手段是靠数据决策、智能流程来完成。伴随着 GPT5 横空问世,已是企业长久可持续发展的必然趋势。
-
大量数据信息有哪些渠道呢?除了人工录入,公司内部信息系统的数据资产以外,竞品网站、互补互联网的开放资源其实也是宝贵的数据资产,一定程度在数据决策分析上起着关键作用。
-
因此,为了满足公司运营部需求 —— 要求技术部门利用合理手段抓取市场运营数据来支撑数据决策。
二、选型
基于上述背景,本章节主要向大家介绍下,选择框架的大致思路步骤,希望能给大家一些启示。
2.1 编程语言
选型第一步,需要明确目标,高效抓取并处理数据。基于这个目标,我首先考虑是 python,因为是解释型语言(所见即所得),不管是开发还是调试效率都比较高;其次,python 有较多免费开源类库,针对大数据量处理与清洗有天然优势;最后,python 有较多的爬虫框架,在这方面有绝对优势。因此,编程语言最终选择的是 python。
2.2 选择框架
python 爬虫框架有很多,例如 Beautiful Soup,PySpider,Scrapy 等等,那基于什么标准来选框架呢?
对于我来说,第一步是要明确抓什么样的数据,是纯页面,还是纯接口的,还是页面加接口等,最后了解下来,需要满足多种场景。基于要满足各种场景数据抓取的需求,比对了常用框架 PySpider 和 Scrapy,发现 Srapy 更符合要。Scrapy 是一个“一个比较灵活的,可配置的爬虫”,每个环节都可以高度定制, 比较适用公司级别的数据抓取,而且对应的社区比较活跃,点赞量超过 47K,fork 量超过 10k,这说明这个框架受到了全球开发者的喜爱,对于日后出现任何框架上的问题都有了很好的保障。
第二步,我会去尝试使用上述的框架,去了解框架设计的理念和框架的实用性。基本的入门在这里就不过多赘述了,大家感兴趣可以自行查看下方链接学习。
从理念上来讲 scrapy 追求的是灵活、简单。灵活体现在每一步的配置包括访问或拦截的每个请求都可以按照开发者的意愿去调整优化,其次一些辅助或互补的功能模块也是以插件的形式结合的,解耦做得比较好;而简单体现在框架整体流程比较清晰明确,流程中每个节点原子性做得比较好,各司其职,方便后期快速排查问题,定位问题,其次,针对简单页面抓取值,开发者只需要简单配置下就能完成,让开发者更关注于业务非底层实现。
结合上述两步的验证与考量,最终自己选择了 Scrapy。
三、关联生态
3.1 Scrapyd
使用过 Scrapy 的童鞋都清楚,基于开发者本地开发调试使用 scrapy 命令操作就可以完成。但如果要基于服务来的话,就需要用 Scrapyd 服务来操作。Scrapyd 主要解决了可视化与服务端的问题,主要提供了 Job,Logs 可视化。
具体 Scrapyd 安装与操作希望大家自行翻阅资料,下面就 Scrapyd 常用的命令罗列下:
常用名命令 | 执行命令 | 命令描述 |
---|---|---|
scrapyd | scrapyd | 启动 scrapy 服务 |
scrapyd-deploy | scrapyd-deploy [部署名称] -p [项目名称] | 部署爬虫项目 |
scrapyd-deploy egg | scrapyd-deploy --build-egg output.egg | 生成 egg 文件 |
Scrapyd webapi 的常用命令:
- curl http://localhost:6800/listprojects.json (列出项目)
- curl http://localhost:6800/listspiders.json?project=myspider (列出爬虫)
- curl http://localhost:6800/listjobs.json?project=myspider (列出 job)
- curl http://localhost:6800/cancel.json -d project=myspider -d job=tencent (终止爬虫,该功能会有延时或不能终止爬虫的情况,此时可用 kill -9 杀进程的方式中止)
3.2 SpiderKeeper
根据以往项目经验,SpiderKeeper 也是 Scrapy 的关联生态。SpiderKeeper 主要功能是给 Scrapy 插上定时任务功能的翅膀,但 SpiderKeeper 依附于 Scrapyd 服务,从其启动的命令就能看出来:
$root spiderkeeper --server=http://127.0.0.1:6800
四、总结
最后花一分钟时间跟大家总结下,任何技术选型的前提是理清楚业务需求目标,有了目标才能去选择技术框架,然后对比框架要从理念、性能、可维护、可拓展、关联生态的维度去考量,同时结合项目经验,相信选出的框架肯定不会差,要相信自己是最棒的!
如果你对Python感兴趣,想要学习python,这里给大家分享一份Python全套学习资料,都是我自己学习时整理的,希望可以帮到你,一起加油!
😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓
Python全套学习资料
1??零基础入门
① 学习路线
对于从来没有接触过Python的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
② 路线对应学习视频
还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~
③练习题
每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
2??国内外Python书籍、文档
① 文档和书籍资料
3??Python工具包+项目源码合集
①Python工具包
学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
②Python实战案例
光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
③Python小游戏源码
如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
4??Python面试题
我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
上述所有资料 ?? ,朋友们如果有需要的,可以扫描下方👇👇👇二维码免费领取🆓
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!