摘要:随着社会的不断发展,数据时代的到来,数据的背后是什么,数据有什么用,怎么用庞大的数据来呈现出数据的价值,让我们一起去揭开它神秘的面纱。
以孔夫子旧书网热销书籍5本图书数据爬取为例,介绍网络爬虫的基本原理,Python环境的搭建,PyCharm request pyechart等的爬虫数据的运用,把获取到的数据进行清洗、整合,储存数据到MySQL,然后进行数据可视化的呈现,简单对呈现的图进行数据分析。
1系统开发背景
1.1 背景
在大数据时代,人类社会的数据正以前所未有的速度增长。数据蕴含着巨大的价值,无论是对个人工作、生活,还是对企业未来的发展和创新商业模式,都有着很大的帮助。充分挖掘数据潜在价值,能帮助人们找到更合适的合作对象、更便宜的生活用品,也能帮助企业找到更好的细分市场,有针对性地为企业日后的发展提供数据支撑。数据让人们更好地掌握市场动向,更好地应对市场,产生新的合理的决策。
数据背后所隐藏的巨大商业价值正开始被越来越多的人所重视,那么数据从何而来?可以从网上找数据,但是人工提取数据效率太低,从经济角度也不可行。购买数据是一 个办法,但是目前公开交易的数据少之又少,很难与多样化的数据需求匹配。因此,对很多人和企业来说,如果想获取全面、有效、 准确的数据, 编写爬虫抓取数据是一种明智之选
1.2 目标及意义
目标:数据来源于孔夫子旧书网热销书籍官网的公开信息,爬取图书热销榜公示信息数据,主要包括书名、评论内容、评论数据、价格的信息。
意义:
- 指示热销榜图书评论条数的排名。
- 指示热销榜图书词频分析。
- 指示热销榜图书评论数据分布。
- 指导我们在看图书和理解书中内容的方法和建议。
2系统相关技术介绍
本文主要是基于python语法和其强大的库来实现系统的多种功能。
2.1 Python语言
Python是一种计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。
Python在设计上坚持了清晰划一的风格,这使得Python成为一门易读、易维护,并且被大量用户所欢迎的、用途广泛的语言。
2.2 request库
Requests是用python语言基于urllib编写的,采用的是Apache2 Licensed开源协议的HTTP库,是网络爬虫中及其重要的组成成分。
2.3 BeautifulSoup
BeautifulSoup是用来从HTML或XML中提取数据的Python库。
对于不具备良好格式的 HTML 内容,lxml 提供了两个有用的包:lxml.html 模块和 BeautifulSoup 解析器。
2.4 pyecharts库
echarts是一个使用 JavaScript 实现的开源可视化库,因为其着良好的交互性,精巧的图表设计,受到众多开发者青睐。Python 是一门富有表达力的语言,在数据处理方面很在行。当Python数据分析遇上echarts数据可视化相遇时,碰撞出了新的Python可视化库,于是Pyecharts诞生了。Echarts是百度开源的一个数据可视化JS库,Pyecharts 则是是一个用于生成 Echarts 图表的类库。使用Pyecharts时,我们可以使用Python来调用里面的API,因此Pyecharts使用起来更简单,绘图的效果更好,还能实现动态交互。
2.5 json库
JSON 是存储和交换文本信息的语法,类似 XML。
JSON 比 XML 更小、更快,更易解析。
JSON 易于人阅读和编写。
C、Python、C++、Java、PHP、Go等编程语言都支持 JSON。
2.6 WordCloud库
wordcloud库,可以说是python非常优秀的词云展示第三方库。词云以词语为基本单位更加直观和艺术的展示文本。
wordcloud把词云当作一个对象,它可以将文本中词语出现的频率作为一个参数绘制词云,而词云的大小、颜色、形状等都是可以设定的。
2.7pymysql库
PyMySQL包包含一个纯Python MySQL客户端库。PyySQL的目标是对MySQL LDAP进行替换,并对CPython、PyPy和IrPython进行工作。
2.8 jieba库
Jieba库作用:1、利用中文词库,分析汉字与汉字之间的关联几率
2、还有分析汉字词组的关联几率
3、还可以根据用户自定义的词组进行分析。是做词云图的关键。
3系统分析与设计
3.1 可行性分析
3.1.1 技术可行性分析
本人掌握python、sql等数据处理技术,并且熟练使用mySql数据库、pycharm集成开发环境,并且在互联网上比较容易获取找到相关技术文档,因此技术思路清晰。
3.1.2 数据可获得性分析
本文分析孔夫子旧书网热销榜图书数据,数据来源真实可靠而且可以轻松获取。
3.2 各模块设计
3.2.1 数据获取方法
数据集来源孔夫子旧书网热销榜图书数据,通过python中的bs4和json获取html中的数据。
3.2.2 数据预处理设计
对于爬取数据量不大的内容可以使用pymysql库来存储数据,将其存为sql文件格式,再对数据进行数据预处理,也可通过代码进行数据预处理。
3.2.3 数据分析思路设计
通过对孔夫子旧书网热销榜图书数据爬取字段分析,可提供的数据分析如下:
热销榜图书评论条数的排名分析。图书评论价格分析。热销榜图书词频分析。热销榜图书评论数据分布分析。
4.1.1数据获取
打开网页获取想要爬取的数据标签定位
4.1.2获取评论数据url
打开五本热销书籍链接可以知道,评论数据在开发者工具--网络--xhr中如下图可知,评论数据为post请求,所以post请求的构建是获取url的重点
4.1.3数据存储与清洗
在获取链接,爬取数据后,保存的为json格式数据,所以要对json格式的数据进行提取和清洗,使用json.loads方法,将json数据转换成字典类型,通过键值对提取里面的评论信息。
部分代码截图:
提取评论数据后,添加到数据库,清洗后的数据如下图
部分代码截图:
5.1词频图的数据分析
在做词云图之前,必须对先做词频分析,利用jieba库进行分词处理,去掉一些停用词和无用词,在进行词频统计。具体步骤如下:
- 统计词频并将相关数据封装入字典
先从数据库读取评论数据,存为txt格式,方便做jieba分词
- 统计好词频之后,我们要使用停用词和一些无意义的词语去掉,这样做出来的词云图才有意义,使用for循环去提取字典数据,在存为列表数据,部分代码如下:
最后生成了一个列表数据,这个词频的列表数据,就可以用来做词云图
6.1 数据可视化
图书评论价格分析。从数据库中查询图书价格数据,然后通过fetchall函数,转换成元组数据,在通过for循环,把元组输出成列表,在调用pyecharts的bar模块,将列表数据以柱形图的形式呈现出来。结果如下图:
部分代码如下:
热销榜图书词频分析。经过词频数据分析处理后的列表数据,在调用pyecharts的wordcloud模块,将列表数据以词云图的形式呈现出来,字体越大,颜色越深的代表词频越高,如下图:
部分代码如下:
热销榜图书评论数据分布分析。从数据库中查询图书评论数据,然后通过fetchall函数,转换成元组数据,在通过for循环,把元组输出成列表,在调用pyecharts的Radar
模块,将列表数据以雷达图的形式呈现出来,每一个坐标点对应一个方面的数据,能从不同的角度去分析评论数据的分布特性,效果如下图:
部分代码如下:
最后在将三个图进行结合一起,用pyecharts的page进行实例化,将三图在一个HTML页面上展示,体现数据的可读性和美观度。效果如下: