2000个Star的Github项目很牛逼?
首先,说明下,这篇文章是基于我的开源项目WebHubBot来讲的。不清楚的可以看XiyouMc/WebHubBot。
这篇文章,其实我很早都想写了。也算是对整个项目的总结,其次也是给那些问WebHubBot技术的人一个答复。
说实话,这个项目的技术很普通。普通到什么程度呢?我可以很清楚的告诉你,这个项目就用了屈指可数的几个技术点:Http协议、Html、Python、MongoDB 和 Scrapy。就这么几个技术,对于一般的程序员来讲,真心不是什么牛逼点。
那么接下来,我主要从为什么会火和具体的技术点来扯下。
1、为什么这个项目会火呢?
在我看来,它能火起来真的是运气。
如果真的要我说出个所以然,那么我觉得就因为这两点它才会火起来。
- 第一点,因为项目爬的网站是有诱惑力的。
其实,大家可以在Github上搜索下此类网站的爬虫。你会搜索到很多类似的爬虫。但是他们的Star反而都是几十个,甚至没有。
- 第二点,我有一份精简、清晰的英文文档。
其中,我很清晰的从项目简介、项目环境、启动前配置、启动方式、截图、数据库说明等的这几个方面进行简单描述。而且我觉得这些就够了。
最重要的一点,就是这篇英文文档写的很简单,都是简单词汇。
2、牛逼的技术?
其实,在这个社会,同一个行业并没有牛逼一说,反而牛逼的是不同行业的。就比如,会造飞机的就是牛逼。所以,这个项目的技术点在整个互联网的圈子并没有牛逼到哪去。
为什么这么说呢 ?
- Http协议
一套应用层的协议,官话是超文本传输协议。为什么提这个呢,是因为要去爬一个网站,你首先需要弄清楚,在什么样的请求下才能响应正常、又是怎么拿到网页数据的。这样,你才有去写爬虫请求的能力。
我这里推荐一个学习的地址:
http://www.cnblogs.com/ranyonsue/p/5984001.html
- Html页面
写爬虫不需要你有多么牛逼的前端经验。就像我,从未写过前端页面,但是前端那些标签,我几乎都能看懂。
不过对于爬虫来讲,可能Xpath语法的会重要一点。Xpath是什么呢?
Xpath是XML路径语言。它是为了确定XML文档中某部分位置的语言。众所周知,Html其中也是使用XML语言。因此,简单的来说,我们可以通过Xpath来定位到Html页面中某个控件的位置。
比如,就Baidu.com的首页来讲,我们通过Xpath来拿到 “百度一下” 按钮的位置。
那么, “百度一下” 的XPath路径将是 //input[@class="bg s_btn"] ,这个路径也就会定位到这个控件的位置。
接下来就简单了,我们可以拿到这个控件之后去做Click操作。这样的话,就用代码完成了百度一下的功能。
同样的,推荐教程附上:
http://www.w3school.com.cn/xpath/index.asp
- Python + Scrapy
Python算是爬虫中的利器了,如果你不会Python。那么其他语言同样可以实现爬虫。但是,工作量将是Python的n倍。
Python更适合做爬虫。之所以这么讲,是因为它的框架很多,开放的依赖库很多,其次就是工作效率高,Java要用100行来实现的一个小工具,Python也许只要10行。就是这么牛逼。所以,你不上手更待何时。
这里,送上我的福利,PythonDev小密圈,适合老司机更适合新手。
其次,Scrapy框架。这个框架呢,其实很难评价。因为你要是用不好的话,会出现杀鸡焉用牛刀的笑话。
Scrapy是一套及其灵活的框架。为什么说它灵活呢?
首先它的parse -> yield item -> pipeline流程已经是所有爬虫的固有模式,其中解析函数可以自己来实现,怎么处理网页自己决定。pipeline可以自己写,爬到的数据怎么处理也是自己可以决定的。
其次,就是底层操作的修改,包括代理中间件、下载中间件之类的,这些也都可以通过middleware来实现。甚至,目前已经有很多开源的中间件已经实现绝大部分的爬虫需求。
奉上Scrapy教程:
http://scrapy-chs.readthedocs.io/zh_CN/0.24/intro/tutorial.html
最后,来简单的说一个针对新手的爬虫框架,Beautiful Soup。
这个,我也没接触过。但是,我知道它是真的很简单。首先,它不需要多少代码就可以写出一个完整的爬虫应用程序;其次,是因为我家属,做Android的司机,第一次玩BS也是非常快的就上手了。
所以,Beautiful Soup,这个框架绝对是新手必备的。
- MongoDB
持久化、非关系型数据库。多用于分布式系统。
之所以,WebHubBot会选择用MongoDB。重要的一点是Python可以直接将对象转化为JSON,并且pymongo可以直接将JSON数据插入到MongoDB,这不是很方便嘛,且减少了我来写SQL的很多时间,何乐而不为呢。
当然,MongoDB存储数据的格式不是JSON,而是一个非常类似于JSON的BSON数据。
其次,Python中使用到的是pymongo。使用pip安装下就好了。
同时MongoDB的安装方式和教程,也很简单。
教程链接:
http://www.runoob.com/mongodb/mongodb-tutorial.html
最后推荐几个MongoDB的可视化工具。
RoboMongo : https://robomongo.org/
Toad:http://www.toadworld.com/products/toad-for-oracle
第一个,Windows系统多数使用。第二,Mac多数。
Linux的大神,就用命令好了。
3、总结
项目中的技术点其实都是基础。我并没有资格说这个项目有多牛逼。在我看来,它就是基础知识堆积起来的而已。
所以,学好基础才是王道,其次要把技术玩起来。
努力成为一个有想法的全栈工程师。
长摁‘识别二维码’,一起进步
生活不止眼前的苟且,还有手下的代码、
和嘴上的扯淡
——
个人博客: http://xiyoumc.0x2048.com/
Github:https://www.github.com/xiyouMc
点击 Join,加入Python技术成长圈子,我在这里等着你。