好的python查询书_我爬取了市面上所有的Python书|想知道几件事

这是菜鸟学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).然后分析每一本书的链接,我们希望解析的信息如下:

我们要提取作者/出版社/译者/出版年/页数/定价/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 : 陈舸

vote_num : 8.9

3).爬虫

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

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

作者html格式一

作者html格式二

大家有没有发现什么不同,要提取作者的信息不难,难在有的书它的作者是嵌套在下面的里面,而有的书的作者是直接跟在后面的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原创教程,趣味算法,经验技巧,行业动态,尽在菜鸟学Python,一起来学python吧

历史人气文章

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值