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

作者: 轻松学Python111 | 来源:发表于2019-03-20 16:00 被阅读5次

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

    image

    我们要提取作者/出版社/译者/出版年/页数/定价/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格式会不一样:

    作者html格式一

    image

    作者html格式二

    image
    • 大家有没有发现什么不同,要提取作者的信息不难,难在有的书它的作者是嵌套在<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%,还有一小块需要完善优化一下,先睹为快吧

    image

    相关文章

      网友评论

        本文标题:我爬取了市面上所有的Python书|想知道几件事

        本文链接:https://www.haomeiwen.com/subject/fnqtvqtx.html