爬虫学习 pyspider和scrapy小结 / 与其他工具对比

从火车头了解了翻页与正则表达式带入了爬虫原理、后python的urllib和requests彻底梳理了爬虫过程,之后引入phantomjs chromedriver这些彻底解决了爬虫问题,但是这些太琐碎,而且反爬虫越来越厉害,必须升级爬取武器到专业级别。

用python实现了基本爬虫之后,相比火车头工具,再次体验到了代码在灵活度和速度方面的魅力(之前用python用正则表达式处理文本数据速度是excel的10倍),数据采集全面转向python,对爬虫的关键几步也更加清晰:

1,构造url:包括单页、逐层深入、翻页、传入一个网页list;各种参数例如headers参数
2,访问并下载目标页面
3,目标页面类型定义与解析,解析是根本,看返回的目标类型。
4,存储
5,各种配置,例如限制速度
6,高阶的:各种反爬虫、分布式、断网怎么办、防止重复爬!

上面的流程有很多技术细节,其中从技术上可以分为三个:

1,了解http相关的知识,例如访问、下载,还有分布式,这块东西太多了,绝非易事!因此最容易产生各种问题。
2,构造url,这里包括url表达和相关的参数,积累多了也就熟练了。
3,phantomjs操作
4,解析数据,正则表达式(虽然使用起来最麻烦,但是实际操作来看必不可少)、bs4、css、xpath这些,掌握的方法也是多用,多积累代码。

以上应用爬虫的人最关心同时最应该花费心思的就是技术的第2、3、4,对于技术好的人,第3点速度稍慢,自有解决方法,但是对于我这个业务人员来说,完全没必要花费那么多时间深入了,用phantomjs加上sleep10秒中,什么都解决了。

因此必须用框架,只focus最核心的,其他的例如http知识、分布式、断网、防止重复爬取等还是直接站在大牛们的肩上吧!于是 pyspider和scrapy都必须学习了。

个人经过实践感觉,pyspider更加简单,但是网上资料少,只要好好读官方文档基本能解决90%的问题,因此对我这种抄代码为主的用户来说不够灵活,例如想用phantomjs实现模拟点击。scrapy相对复杂,而且网络上代码多,因此相对灵活。

后面分别按照不同阶段代码积累并分享出来!

与其他工具对比:

今日看了某大型互联网公司搜索团队开发的产品,访问网页时候就出问题了,并且其解析规则更麻烦,而且各个用户之间没有共享,突然觉得访问、下载这两步真是不是那么简单的,这些还是给框架去做吧,毕竟开源产品遇到的问题更多!

作为业务公司还是要更多关注业务!技术只是实现业务的手段而非核心竞争力,因此只用成熟的技术就好!稳定、低成本!靠谱!

再来一个案例,看到网上一个使用代理池爬取微信的视频教程,程序员自己写的代码,真的和scrapy差距很大,网页访问和代理代码写得都乱,还是用scrapy吧。

你可能感兴趣的:(爬虫)