摘要:今年第一个项目,python爬取网络上公开的计算机电子书近8000本,在此基础上简要分析计算机专业的发展变迁。部分整理好的书籍下载链接见文末。代码链接见文末。
计算机诞生以来不到100年,学术的、技术的或者一些不知所云的关于计算机的书籍已不胜凡几。不翻墙,在某知名学术网站上computer science书籍搜索就有25600条。
为囤书计,本着互联网分享精神,开发了一个python爬虫,来爬取网络上公开免费的电子书资源,主要技术特征(欢迎移步github,查看源码更多技术细节,链接文末):html.parser.HTMLParser子类化(或正则表达式),提取下载文件链接。
urlretrieve或urlopen,下载文件。
pandas,提取文件信息、错误信息写入数据库,并进行统计计算、转存excel表格。
threading实现多线程并行下载,单个producer提取下载链接,通过队列传递给多个consumer进行下载。
加锁,确保数据库、文件写入不冲突。
异常机制,判断服务器拒绝访问和超时,自动等待重启。
截止当前,一共爬取近8000本计算机电子书(肯定还不全,但就这些这辈子百分百也看不完了,手动捂脸),实际可下载7700余本,主要为pdf格式。其中200多个链接存在问题,正在尝试反馈源网站。
这么多书,一共包括110个关键词标签,按关键词分类可见如下差异。
对其中前15名进行放大,Java果然是第一人气语言(虽然我们是用的Python爬的)。当然咱Python也不弱,怎么也是紧随其后的二大爷……再往下,JavaScript、C、C++都是比较主流的,各大论坛也常常出现一争高低的场景。
也可看出,玩硬件的也不少,网络编程、游戏编程、Web开发也都是挺热门的,都是就业热门啊。但是也发现可能人工智能、机器学习和大数据的书籍可能收录偏少了,这可是当前大热门啊。
再从每年变化情况看一看。2000年后的计算机书籍呈指数上升,专业越来越火。2016年后的书似乎有所减少,应当是因为新书出来还没有网友分享,也跟近年版权意识逐渐提高有关系。
对其中占比最大的前10个分类,作雷达图(绝对数量)、百分比条形图(相对数量)。
从绝对数量看,Java和游戏编程的书籍2013年就很多了,python、JavaScript要来的更晚一点。但从相对数量看,Java的占比有所减少,python已呈反超之势。
以上分析,仅是从浩如烟海的计算机书籍中可公开免费下载的一小部分得出,纯属娱乐,更重要的是认认真真show me the code~~
源码请移步:zz-icoding/AllITeBooksCrawlergithub.com
部分电子书已整理另文提供参考:爱coding:计算机电子书免费资源(中文)zhuanlan.zhihu.com爱coding:计算机电子书免费资源(英文)zhuanlan.zhihu.com