看性能相关的需求选择就行了,2 、3 、4 压根不是爬虫的重点,而且实际这三个部分在不同语言中也都大同小异,所以实际影响选择的只有性能。
Python 的资源占用是必然会比 Go 高的,并且整体的执行速度也比 Go 慢,而请求部分即使用了 asyncio+uvloop+aiohttp 这样的组合也还是会比 Go 慢一些,这都是很显而易见的事情。所以选择起来其实很简单,如果你的并发量或数据时效要求已经达到了 Python 有点资源耗费过高或力不从心的情况,那就果断将部分模块剥离出来用 Go 来做,甚至是完全切到 Go 上做;但如果你只是少量玩玩,那你爱用啥用啥,只要你写着舒服就行。
至于楼上说爬虫不在乎编程语言的性能、只在乎网络 IO 的,很明显都没接触过真正量大的情况...哪怕是就单纯的垂直爬虫搞几个大平台,Python 和 Go 都会出现明显的差距,无论是执行速度还是 CPU 、内存、存储空间占用情况都非常明显。至于网络 IO ?反而不会是重点,因为即使网络方面的速度再慢,靠着高并发也一样可以轻松盖住,这方面你需要担心的仅仅是搞 IP 的钱够不够而已,下行带宽又不贵。
另外,demo 都是 python 的也不是啥显著优势,网上很多这种 demo 的代码都只能说是稀烂,对目标平台的反爬处理更是稀碎,再加上如果是完整流程都 copy 的话必然会涉及到框架的区别问题,而如果只是取请求这种关键部分的话,copy 到 Go 里改一下也一样能用,反正关键逻辑都差不多,费不了多少事...