![cfabb76aeba77402679c2ca21d34e4d6.png](https://i-blog.csdnimg.cn/blog_migrate/4695ca689113744a05901d3f2ff7ed8c.jpeg)
框架
爬虫框架简介
我们直接用requests、Selenium等库写爬虫,如果爬取量不是太大,速度要求不高,是完全可以满足需求的。但是写多了会发现内部许多代码和组件是可以复用的,如果我们把这些组件抽离出来,将各个功能模块化,就慢慢会形成一个框架雏形,久而久之,爬虫框架就诞生了。
抽象,是对于大量具体实例的抽象。没有对大量具体实例的感知,也很难对抽象的规律或框架有深刻的理解。
利用框架,我们可以不用再去关心某些功能的具体实现,只需要关心爬取逻辑即可。有了它们,可以大大简化代码量,而且架构也会变得清晰,爬取效率也会高许多。
所以,如果有一定的基础,上手框架是一种好的选择。
pyspider
pyspider是国人binux编写的强大的网络爬虫框架,它带有强大的WebUI、脚本编辑器、任务监控器、项目管理器以及结果处理器,同时支持多种数据库后端、多种消息队列,另外还支持JavaScript渲染页面的爬取。
pyspider的优点:
1.提供WebUI界面,调试爬虫很方便;
2.可以很方便的进行爬取的流程监控和爬虫项目管理;
3.支持常见的数据库;
4.支持使用PhantomJS,可以抓取JavaScript页面;
5.支持优先级定制和定时爬取等功能;
Scrapy
Scrapy是Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。
pyspider和Scrapy的比较
1.pyspider 提供 WebUI,Scrapy它采用的是代码和命令行操作,但可以通过对接 Portia实现可视化配置。
2.pyspider 支持 PhantomJS来进行 JavaScript 谊染页面的采集, Scrapy 可以对接 Sc rapy-Splash组件,这需要额外配置。
3.pyspider 中内置pyquery 作为选择器而Scrapy 接了XPath 对接css选择器和正则匹配。
4.pyspider的可扩展程度不高,Scrapy可以通过对接其他的模块实现强大的功能,模块之间的耦合度低。
所以如果要快速实现一个页面的抓取,推荐使用 pyspider,开发更加便捷;如果要应对反爬程度很强、超大规模的抓取,推荐使用 Scrapy。
后记:框架、套路、方法、策略、模型、算法,这些词汇描述的内容本质上是一样的,当我们学习和掌握了这些之后,只是意味着我们具备了上路的资格,而不是成为了高手。
就像开车,我们知道了怎样打方向盘,教练也会教我们,车到了什么位置,我们应该看哪个点,方向盘打一圈还是打死等等一些方法。但是真正上路之后,我们才会发现路况的复杂,并不能机械的使用这些方法,而是需要根据现场的情况去判断方向盘应该打多少才刚刚好。当成了老司机之后,这些方法、策略可能已经融到身体里了,这个阶段,已经是无招胜有招了,达到了出神入化的境界。
框架、套路、方法、策略、模型、算法,这些当然很重要,是基础,当我们学了这些内容之后,接下来的重心应该放到,在大量的、实际的具体案例中去感知、去实践、去优化。实际情况远比这些理论要复杂,而所谓的复杂,是因为规模导致的知道的或不知道的各种各样的情况很多,多的超乎想象。复杂不是难,而是情况和状况多。理论是为了研究的方便构建的某些维度的简化模型。