知行编程网知行编程网  2022-03-06 07:00 知行编程网 隐藏边栏 |   抢沙发  1 
文章评分 0 次,平均分 0.0

这是菜鸟学Python的第97篇原创文章

阅读本文大概需要3分钟


    前面讲了好几篇SQL的文章,熟悉我的文章的小伙伴都知道,一般写一个系列,写完一个小阶段,我都会实战写一个例子综合运用一下。正好最近一些出版社跟我联系关于Python书的事情,Python的书其实我看过不少,于是我非常好奇,想知道出版社哪家最强。于是干脆想探索一下市面上所有的Python书,然后分析一下出个报告,说干就干吧~~



1

思路篇

1).我大概花了一个晚上的时间,几乎一动不动的码了3个小时(热的T恤都粘在背上了),爬取了某知名的网站上所有的Python的书, 总共大概有1300多本,因为有一些是重复的,剔除重复的大概还有1200多本


2).接着把这些书的数据,进行清洗,数据的清洗其实是最繁琐的,也是最耗时的步骤,算是整个数据分析里面的重头戏。我算了一下我的数据清洗这一步,花了很大的时间,这一步会遇到很多七七八八的烦心事~~


3).然后按照一定的规则写入到CSV文件,当然也可以写成json文件的格式,因为我想做一个SQL的实战运用,所以我暂时写成CSV文件,方便存入SQL数据库


4).最后数据的分析,我们从SQL数据库中,查询各种各样的组合条件,具体我想知道信息下面慢慢道来.



2

想知道的秘密

1200多本书,我们想探索哪些秘密呢:


哪家出版社出版的Python书最多


哪本Python书的评分最高,都分布在哪些出版社


哪本Python数的阅读数最高


评分高的Python书,是不是阅读数一定很高,有多少人评分的,这两个数据有没有什么秘密隐藏在里面


Python书的页数和价格,还有评分,之间有没有什么关系,市面上卖的好的书,评分9分以上的书,都有哪些特征


在这1200本Python书中,那一年出版发行的python书最多



3

技术篇

1).技术上感觉难度应该不大,我们首先爬取某网站上的所有Python的书的所有的链接


2).然后分析每一本书的链接,我们希望解析的信息如下:

我爬取了市面上所有的Python书|想知道几件事


我们要提取作者/出版社/译者/出版年/页数/定价/ISBN/评分/评价人数

代码爬出的数据,经过处理,格式如下:

author : DavidM.Beazley/BrianK.Jones

book : Python Cookbook 中文版,第3版

isdn : 9787115379597

page : 684

price : 108.0

pub_company : 人民邮电出版社

pub_date : 2015-5-1

rating_people : 51

translator : 陈舸

url : https://book.douban.com/subject/26381341/

vote_num : 8.9



3).爬虫

爬虫可以选择的技术有很多种,你可以自己写多线程去爬,可以用scrapy去爬,或者自己写一个小的框架去爬,这个只是一个途径而已


爬虫的难点,主要是在分析目标的网站的格式,我写完这个项目的时候,发现最大的坑在于,Python的书的html格式会不一样:


我爬取了市面上所有的Python书|想知道几件事

    作者html格式一

    


我爬取了市面上所有的Python书|想知道几件事

作者html格式二


  • 大家有没有发现什么不同,要提取作者的信息不难,难在有的书它的作者是嵌套在<span>下面的<a>里面,而有的书的作者是直接跟在<span>后面的Navstring里面


  • 那么一套爬虫代码需要在解析的时候,兼容两种html格式的爬取,这个会是一个难点



4).写入CSV文件,因为量不是很大,只有1000多条数据,所以开销我们不用在乎,只需要当心保存数据的格式都是对的。特别是当心缺省数据,比如有的书是用译者,有的没有;如果没有缺省值,这样写入CSV的时候,数据容易遗漏,跟CSV的头文件对齐会有问题.



5).数据库的查询

我们用SQL查询比较简单,我们可以把所有的数据做成一个表格,也可以把重要的信息,比如 书名,出版社,评分,ISDN单独弄成一个表格,用ISDN作为主的id key.



4

一些注意事项

除了上面提到的作者的html格式问题之外,还有几个地方要注意


1).字符编码的问题

这些书名,有的是中文,有的是英文,,也就是说有的ASCII,有的uncode,在写入CSV文件的时候需要考虑编码的转换,即使你考虑到了转换,还有一个问题,就是有一些数据是int,而int是无法encode的,怎么办,比如把0变成'0'这样的类似问题



2).数据格式不一致

  • 比如有的书,有译者,有的没有,这样的话你就要考虑缺省值

  • 比如有的书,有评价人数,有的显示'评价人数不足',需要手动转换

  • 比如书的价格:有的是USD 用美金计算,有的是人民币计算,而且写的格式也不一样,需要统计的转换,这样最后分析那本书价格最高比较好获取

  • 日期问题,有一些是纯数字2008-11-1,有一些是数字和汉字结合的比如2010-7月,还有一些只有年份

  • 评价人数,不是只是简单的数字,而是数字和中文字符夹在一起,比如"204人评价"


数据清洗是数据分析里面非常重要的一个环节,而且是最耗精力和时间的,占60%的比重,数据不一致也是家常便饭,我们需要仔细清洗哦



整个项目我基本已经完成了70%,还有一小块需要完善优化一下,先睹为快吧

我爬取了市面上所有的Python书|想知道几件事

...


结论:


好,今天的全网分析Python书,思路准备篇,算是开了个头,下周会详细讲一些技术细节,以及分析的结果用SQL的查询,都一一展现给大家,这个里面的数据挖掘还是很有意思的,有兴趣的小伙伴,也可以自己动手一下哦.若有什么问题,也欢迎留言讨论一下.



欢迎大家关注 菜鸟学Python",更多好玩有趣的Python原创教程,趣味算法,经验技巧,行业动态,尽在菜鸟学Python,一起来学python吧


数据库系列历史文章

        Python数据库起航篇|零基础起步

学会最简单的数据库|看完这7招就够了

3分钟带你了解SQL高级操作

你离学会操作SQL数据库|还剩最后2招



历史人气文章

菜鸟学Python入门教程大盘点|7个多月的心血总结

同学,学Python真的不能这样学

全网爬取6500多只基金|看看哪家基金最强

用Python破解微软面试题|24点游戏

2道极好的Python算法题|带你透彻理解装饰器的妙用

一道Google的算法题 |Python巧妙破解


 长按二维码,关注【菜鸟学python】


我爬取了市面上所有的Python书|想知道几件事


来源 | 菜鸟学Python

作者 | xinxin

本文章为菜鸟学Python独家原创稿件,未经授权不得转载




本篇文章来源于: 菜鸟学Python

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享